Bob*_*Bob 3 javascript maps json javascript-objects
我已经坚持了几个小时.
我有一个对象列表:
const myCompanyList = [
{name: 'coca-cola', size: 'big', color: 'red'},
{name: 'my-cola', size: 'small', color: 'purple'},
{name: 'pepsi', size: 'big', color: 'blue'}
];
Run Code Online (Sandbox Code Playgroud)
我需要把它变成这种格式:
myJson = {
companies: {
big: {
coca-cola: {color: 'red'},
pepsi: {color: 'blue'}
},
small: {
my-cola: {color: 'purple'}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
wrapperObject = {};
innerObject = {};
for each object in myCompanyList {
innerObject[object.size] = { object.name : {color: object.color}}
}
Run Code Online (Sandbox Code Playgroud)
但是对象[name]位会被覆盖.我怎么写这个,这样我就能在每个对象/地图级别动态获取名字?我是否需要制作另一个内部对象/地图来动态写入名称?
我已经尝试用Java写这个,但我最终得到了5维地图并且它没有用,所以我只是想知道是否有一些简单的我缺少 - 用Java,javascript或伪代码回答谢谢.
您可以使用Array.reduce()创建地图,请尝试以下操作:
let myCompanyList = [{name: "coca-cola", size: "big", color: "red"}, {name: "my-cola", size: "small", color: "purple"},{name: "pepsi", size: "big", color:"blue"}];
let result = {};
result.companies = myCompanyList.reduce((a,curr)=>{
a[curr.size] = a[curr.size] || {};
a[curr.size][curr.name] = {"color" : curr.color};
return a;
},{});
console.log(result);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63 次 |
最近记录: |