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

Javascript LoDash:从对象属性数组中获取值数组,javascript,lodash,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 u

我肯定它在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版开始,您应该使用:

这样,它对应于您将要编写的本机方法(ES2015语法):

在v4.x之前,您可以使用相同的方法:

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

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

for(var i = 0; i < users.Count; i++){
   alert(users[i].id);  
}
for(var i=0;i
使用纯JS:

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

在新的lodash发行版v4.0.0中,Pull已删除,取而代之的是map

然后你可以使用这个:

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

您可以在

中看到,如果您使用的是本机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用户=[{
id:12,
名字:“亚当”
},{
身份证号码:14,
姓名:“鲍勃”
},{
身份证号码:16,
名字:“查理”
},{
身份证号码:18,
姓名:“大卫”
}
]
const userIds=389;.values(用户);

日志(userid)//[12,14,16,18]
谢谢你,比
.toArray({.mapValues(users,'id'))好得多。
我如何用id获取名称,我的意思是我们如何获取两个以上的值?@John
users.map({id,name})=>({id,name}))
或者更不神秘的
users.map(user=>({id:user.id,name:user.name}))
。lodash中也一样:
.map(users,({id,name})=>({id,name}))
@dfsq,这是将对象添加到输出数组中的好方法。谢谢一次循环一个元素就可以了。数组是索引的数据结构,其中包含来自某个数据类型(在本例中为其对象)的值。只能通过计算数组索引中的元素来访问对象。循环就是实现这一点的结构;进入我的级别
users.map({id}=>id)
OP明确要求使用Lodash解决方案。为什么
flatMap()
而不是
map()
?@Lacek
map()
用于对象操作,其中
flatMap()
仅用于将数组软化为单个数组我知道
map()
flatMap()的不同之处
。我只是想知道,在这种情况下,既然已经有了关于
map()
的答案,为什么建议使用
flatMap()
。如果您能详细说明我们何时应该使用
flatMap()
而不是
map()
@Lacek,那就太好了,因为在某些情况下,它对于从数组中获取所需的基本数据非常有用。有用的链接OP只需要ID。您的代码不会打印出ID,而是打印出整个对象。
let newArr = _.map(arr, o => _.pick(o, ['name', 'surname', 'rate']));
let newArray = users.flatMap(i => i.ID) // -> [ 12, 13, 14, 15 ]