简体   繁体   English

Lodash如何将对象数组转换为一个对象

[英]How to transform array of objects into one object by Lodash

Example from this: 来自此的示例:

[
    {"name":"tony", "age":14},
    {"name":"jacky", "age":23},
    {"name":"lucy", "age":34},
    {"name":"sam", "age":15},
    {"name":"jay", "age":31}
]

to: 至:

{
    "tony": [],
    "jacky": [],
    "lucy": [],
    "sam": [],
    "jay": []
}

There is no need to use Lodash . 无需使用Lodash Array.prototype.reduce() will do the job. Array.prototype.reduce()将完成这项工作。

 const data = [ {"name":"tony", "age":14}, {"name":"jacky", "age":23}, {"name":"lucy", "age":34}, {"name":"sam", "age":15}, {"name":"jay", "age":31} ]; const result = data.reduce((acc, curr) => { acc[curr.name] = []; return acc; }, {}); console.log(result); 

Try with Array#forEach function . 尝试使用Array#forEach函数。

 var arr =[ {"name":"tony", "age":14}, {"name":"jacky", "age":23}, {"name":"lucy", "age":34}, {"name":"sam", "age":15}, {"name":"jay", "age":31} ] var obj={} arr.forEach(function(a){ obj[a.name]=[] }) console.log(obj) 

Or simple do with Array#reduce 简单地使用Array#reduce

 var arr =[ {"name":"tony", "age":14}, {"name":"jacky", "age":23}, {"name":"lucy", "age":34}, {"name":"sam", "age":15}, {"name":"jay", "age":31} ] var res = arr.reduce((a,b) => (a[b.name]=[] ,a),{}) console.log(res) 

如果您不想使用forreduce ,那么这是一个单点划线

_(data).keyBy('name').mapValues(() => []).value()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM