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

时间:2015-02-05 21:49:14

标签: javascript 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'));

8 个答案:

答案 0 :(得分:261)

从版本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]

答案 1 :(得分:15)

使用纯JS:

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

答案 2 :(得分:12)

在新的 lodash版本v4.0.0 _.pluck已删除,转而使用_.map

然后你可以使用它:

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

您可以在Github Changelog

中看到

答案 3 :(得分:2)

通过ES6获取它的简单甚至更快的方法

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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]

答案 6 :(得分:-2)

如果您使用的是原生javascript,则可以使用此代码 -

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

    return obj.id;
})

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

答案 7 :(得分:-17)

这会在弹出窗口中显示您想要的内容。

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