【发布时间】:2019-07-04 18:54:33
【问题描述】:
我有一个用户对象,我试图在其上使用 lodash map() 方法让它只返回用户 ID,同时过滤掉任何带有 currentUserId 的用户。我想避免使用chain(),因为它会拉入整个库,所以看起来flow() 方法是完美的,但它没有映射到ID 数组。
import {
map, filter, flow,
} from 'lodash';
const users = {
123: {
uid: 123
},
456: {
uid: 456
}
};
const currentUserId = 123;
const userIds = _.flow(
_.map(user => user.uid),
_.filter(userId => userId !== currentUserId),
)(users);
不幸的是,这将返回与传递给它的对象相同的对象。如何获取包含所有非当前用户的用户 ID 的数组?
【问题讨论】:
-
_.map(user => user.uid)被评估之前_.flow()甚至被调用。 -
@Pointy 这似乎是 lodash 的函数式用法,所以
_.map不应该是创建一个期望对象执行映射的新函数的柯里化调用吗?除非 OP 没有在其函数形式中使用 lodash,否则_.map不应在之后立即执行 -
Lodash 不会(也不能)改变基本的 JavaScript 表达式求值的工作方式。 Lodash
_.flow()方法需要传递一个函数引用数组。这不是在发布的代码中所做的。 -
@Pointy 我没有关注你。您介意用正确编写的代码提供答案吗?
-
_.map(user => user.uid)是函数调用,而不是函数。
标签: javascript lodash