微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 UnderscoreJS、Omit 和少数条件组合所有内容?

如何解决如何使用 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 举报,一经查实,本站将立刻删除。