gpt4 book ai didi

javascript - 下划线相当于 _.pick 数组

转载 作者:可可西里 更新时间:2023-11-01 01:57:24 25 4
gpt4 key购买 nike

我知道 pick 用于取回仅具有指定属性的对象:

_.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
=> {name: 'moe', age: 50}

我将如何对数组执行相同的操作,假设我有一个数组,例如:

[{name: 'moe1', age: 50, userid: 'moe1'},
{name: 'moe2', age: 50, userid: 'moe1'},
{name: 'moe3', age: 50, userid: 'moe1'}]

我想将它映射到一个数组,以便仅包含 nameage 属性,例如:

[{name: 'moe1', age: 50},
{name: 'moe2', age: 50},
{name: 'moe3', age: 50}]

我是否必须对数组执行 each() 然后对每个对象执行 pick(),还是有更简洁的方法?

编辑

抱歉,这只是另一个小要求,我将如何执行 where(即获取所有年龄大于 50 岁的人)然后执行 pick编辑像这样完成了,不知道链接在下划线中是如何工作的。

_(data).reject(function (r) { return d.age<51; }).map(function (o) {
return _.pick(o, "age", "name");
});

最佳答案

您必须使用 _.map 并对所有对象应用相同的 _.pick

var data = [{name: 'moe1', age: 30, userid: 'moe1'},
{name: 'moe2', age: 50, userid: 'moe1'},
{name: 'moe3', age: 60, userid: 'moe1'}];

var result = _.map(data, function(currentObject) {
return _.pick(currentObject, "name", "age");
});

console.log(result);

输出

[ { name: 'moe1', age: 50 },
{ name: 'moe2', age: 50 },
{ name: 'moe3', age: 50 } ]

如果你想获取年龄大于50的对象,你可能想这样做

var data = [{name: 'moe1', age: 30, userid: 'moe1'},
{name: 'moe2', age: 50, userid: 'moe1'},
{name: 'moe3', age: 60, userid: 'moe1'}];

function filterByAge(currentObject) {
return currentObject.age && currentObject.age > 50;
}

function omitUserId(currentObject) {
return _.omit(currentObject, "userid");
}

var result = _.map(_.filter(data, filterByAge), omitUserId);
console.log(result);

输出

[ { name: 'moe3', age: 60 } ]

你可以用链来做同样的事情,as suggested by rightfold , 像这样

var result = _.chain(data).filter(filterByAge).map(omitUserId).value();

关于javascript - 下划线相当于 _.pick 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22280775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com