LoDash:从对象属性数组中获取值数组

我确信它在LoDash文档中的某个地方,但我似乎找不到正确的组合。

var users = [{
id: 12,
name: 'Adam'
},{
id: 14,
name: 'Bob'
},{
id: 16,
name: 'Charlie'
},{
id: 18,
name: 'David'
}
]


// how do I get [12, 14, 16, 18]
var userIds = _.map(users, _.pick('id'));
234347 次浏览

从v4版本开始。x你应该使用_.map:

_.map(users, 'id'); // [12, 14, 16, 18]

这样它就对应于原生的Array.prototype.map方法,你可以这样写(ES2015语法):

users.map(user => user.id); // [12, 14, 16, 18]

在v4之前。你可以用同样的方式使用_.pluck:

_.pluck(users, 'id'); // [12, 14, 16, 18]

这将给你你想要的弹出窗口。

for(var i = 0; i < users.Count; i++){
alert(users[i].id);
}

使用纯JS:

var userIds = users.map( function(obj) { return obj.id; } );

在新的Lodash v4.0.0版中,_.pluck已经被删除,取而代之的是_.map

然后你可以用这个:

_.map(users, 'id'); // [12, 14, 16, 18]

你可以在Github的更新日志中看到

如果你使用本地javascript,那么你可以使用这段代码-

let ids = users.map(function(obj, index) {


return obj.id;
})


console.log(ids); //[12, 14, 16, 18]

如果需要从每个对象中提取多个属性,则

let newArr = _.map(arr, o => _.pick(o, ['name', 'surname', 'rate']));

通过ES6获得它的简单和更快的方法

let newArray = users.flatMap(i => i.ID) // -> [ 12, 13, 14, 15 ]

const users = [{
id: 12,
name: 'Adam'
},{
id: 14,
name: 'Bob'
},{
id: 16,
name: 'Charlie'
},{
id: 18,
name: 'David'
}
]
const userIds = _.values(users);
console.log(userIds); //[12, 14, 16, 18]