【问题标题】:Lodash concatenate two methodsLodash 连接两种方法
【发布时间】:2019-03-19 11:14:55
【问题描述】:

是否可以连接两个 lodash 方法?在我的例子中 uniqBy 和 sortBy

例子:

const uniquePotentialClients = _.uniqBy(
    [...potentialClients],
    uniqueContact => uniqueContact.phoneNumbers[0].number,
 );

 const sortPotentialClients = _.sortBy(
    [...potentialClients],
    uniqueContact => uniqueContact.givenName,
 );

是否有可能两个将这两种方法应用于一个集合?

【问题讨论】:

标签: javascript lodash


【解决方案1】:

你有两个选择:

Chaining

这包含了您正在处理的值,然后您可以在不提供参数的情况下对其链接更多操作。完成后.value() 提取最终值。

const result = _.chain([...potentialClients])
  .uniqBy(uniqueContact => uniqueContact.phoneNumbers[0].number)
  .sortBy(uniqueContact => uniqueContact.givenName)
  .value();

使用功能组合

const uniqFn = _.uniqBy(uniqueContact => uniqueContact.phoneNumbers[0].number);
const sortFn = _.sortBy(uniqueContact => uniqueContact.givenName);

const composedFn = _.flow(uniqFn, sortFn);

const result = composedFn([...potentialClients]);

如果您使用的是FP release of Lodash,则此实现是可能的。如果你不是,那么你必须对函数应用修饰符来翻转参数并使它们柯里化,这将使它们对函数式编程友好,类似于 lodash/fp 所做的。以下是如何做到这一点的示例:

 //_.curry requires the arity to be declared, passing 2 satisfies both these functions
const makeFpFriendly = f => _.curry(_.flip(f), 2);

const uniqByFpFriendly = makeFpFriendly(_.uniqBy);
const sortByFpFriendly = makeFpFriendly(_.sortBy);

【讨论】:

  • 这种方法可以把数字排在字母后面吗?
猜你喜欢
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2018-10-25
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多