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

LoDash: Get an array of values from an array of object properties

本文关键字:一组 获取 属性 对象 LoDash      更新时间:2023-09-26

我确信它在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'));

由于版本v4.x,您应该使用_.map:

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

通过这种方式,它对应于您要编写的本机Array.prototype.map方法(ES2015语法):

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

在v4.x之前,您可以以相同的方式使用_.pluck

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

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

然后你可以使用这个:

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

您可以在Github Changelog 中看到

使用纯JS:

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

如果你需要从每个对象中提取几个属性,那么

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

通过ES6 获得它的简单而快速的方法

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

如果您使用的是本机javascript,那么您可以使用以下代码-

let ids = users.map(function(obj, index) {
    return obj.id;
})
console.log(ids); //[12, 14, 16, 18]

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]

这将在弹出窗口中为您提供所需内容。

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