Javascript LoDash:从对象属性数组中获取值数组
我肯定它在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
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获取名称,我的意思是我们如何获取两个以上的值?@Johnusers.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()
?@Lacekmap()
用于对象操作,其中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 ]