是否可以连接两个lodash方法?就我而言,是uniqBy和sortBy
示例:
const uniquePotentialClients = _.uniqBy(
[...potentialClients],
uniqueContact => uniqueContact.phoneNumbers[0].number,
);
const sortPotentialClients = _.sortBy(
[...potentialClients],
uniqueContact => uniqueContact.givenName,
);
是否可以将这两种方法应用于一个集合?
答案 0 :(得分:2)
您有两种选择:
这将包装您要使用的值,然后您可以对进行更多操作,而无需提供参数。完成后,.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);