【问题标题】:Convert nested aray into group of objects: Javacript将嵌套数组转换为对象组:Javascript
【发布时间】:2022-12-18 12:29:11
【问题描述】:
我有一个具有以下结构的对象
arr = [ {field: "f1", values: [{ count:1, value: "a"}, { count:2, value: "b"]} },
{field: "f2", values: [{ count:3, value: "c"}, { count:4, value: "d"]}
]
输出应该看起来像
output = {
f1: { name: "f1", selected: [] },
f2: { name: "f2", selected: [] }
}
基本上 field 中的值应该是新对象中的键,它的名称也应该与空选择数组具有相同的值
我试过的代码。
arr.map(item => {
return {
item: {name: item, selected: []
}
);
【问题讨论】:
标签:
javascript
arrays
ecmascript-6
ecmascript-5
【解决方案1】:
const arr = [
{ field: "f1", values: [{ count: 1, value: "a" }, { count: 2, value: "b" }] },
{ field: "f2", values: [{ count: 3, value: "c" }, { count: 4, value: "d" }] }
]
const output = arr.reduce((p, { field }) => {
p[field] = { name: field, selected: [] };
return p;
}, {});
console.log(output);
【解决方案2】:
我们可以使用Array.reduce()来做
let arr = [
{ field: "f1", values: [{ count: 1, value: "a" }, { count: 2, value: "b" }] },
{ field: "f2", values: [{ count: 3, value: "c" }, { count: 4, value: "d" }] }
]
let result = arr.reduce((a,v) => {
let obj = {'name':v.field, 'selected': []}
a[v.field] = obj
return a
},{})
console.log(result)