据我所知,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'}]我希望将它映射到一个数组,以便只包含name和age属性,例如:
[{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");
});发布于 2014-03-09 09:54:50
您必须使用_.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();发布于 2022-05-16 15:48:39
对于这个(~50 for的导入),您只需使用一种交存方法:
npm i lodash.pick解决方案:
const pick = require('lodash.pick')
const filterValues = ['name', 'age']
const arr = [
{ name: 'moe1', age: 52, userid: 'moe1' },
{ name: 'moe2', age: 50, userid: 'moe1' },
{ name: 'moe3', age: 50, userid: 'moe1' }
]
const result = arr
.filter(item => item.age < 51)
.map(item => pick(item, filterValues))输出:
[ { name: 'moe2', age: 50 }, { name: 'moe3', age: 50 } ]https://stackoverflow.com/questions/22280775
复制相似问题