如何解决如何使用 UnderscoreJS、Omit 和少数条件组合所有内容?
const objA = {
name: 'jack',age: '24',address : '#210-1101',zip : '10114',Zip1 : '22222',accountNo : '12345667890',bankName : 'KB',amount : '1000',currency : 'USD',country : 'USA'
};
const objB = {
name: 'eddie',lastName : 'bauer',addressDetail : '',address: '#210-1101',zip: '10114',currency : 'EUR',country : 'FRA'
};
const isSame = (v,k) => objA[k] === v;
const tmpRet = _(objB).omit(isSame);
const isName = (tmpRet,k) => k === 'name' ? Object.assign(tmpRet,{date: '19780708'},{}) : '';
const isCurrency = (tmpRet,k) => k === 'currency' ? Object.assign(tmpRet,{currency2: 'USD'},{}) : '';
const checkCondition = (tmpRet,k) => { isName(tmpRet,k); isCurrency(tmpRet,k); };
const goFunc = () => _(tmpRet).each( (v,k) => checkCondition(tmpRet,k));
goFunc();
console.log(tmpRet );
我想让它更像是一种功能性的方式和单线。
有什么建议吗??
谢谢
解决方法
你可能正在寻找这样的东西:
import _ from 'underscore'
const objA = {
name: 'jack',age: '24',address: '#210-1101',zip: '10114',Zip1: '22222',accountNo: '12345667890',bankName: 'KB',amount: '1000',currency: 'USD',country: 'USA'
};
const objB = {
name: 'eddie',lastName: 'bauer',addressDetail: '',currency: 'EUR',country: 'FRA'
};
const compose = (...fns) => (tmp,k) => fns.reduceRight((acc,fn) => fn(acc,k),tmp)
const isSame = (v,k) => objA[k] === v;
const tmpRet = _(objB).omit(isSame);
const isName = (tmp,k) => k === 'name' ? {
...tmp,date: '19780708'
} : '';
const isCurrency = (tmp,k) => k === 'currency' ? {
...tmp,currency2: 'USD',} : '';
const goFunc = () => _(tmpRet).each((_/** should it be unused ? */,k) => compose(isName,isCurrency)(tmpRet,k));
goFunc();
请记住,有内置的 compose
函数,但是 AFAIK,当我们需要传递两个参数时,它需要 1 个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。