我有一个 JS 数组(显示 4 个示例,实际有 66 个)
[["A","Example1"],["A","Example2"],["B","Example3"],["B","Example4"]]
我正在尝试进入多选下拉菜单的对象:
var opt = [{
label: 'A', children:[
{"label":"Example1","value":"Example1","selected":"TRUE"},
{"label":"Example2","value":"Example2","selected":"TRUE"}
]
},
{
label: 'B', children:[
{"label":"Example3","value":"Example3","selected":"TRUE"},
{"label":"Example4","value":"Example4","selected":"TRUE"}
]
}
]
有没有简单的方法可以做到这一点?
最佳答案
更新:
使用 reduce()
和 filter()
获得预期结果。
const result = [['A', 'Example1'], ['A', 'Example2'], ['B', 'Example3'], ['B', 'Example4']].reduce((acc, cur) => {
const objFromAccumulator = acc.filter((row) => row.label === cur[0]);
const newChild = {label: cur[1], value: cur[1], selected: 'TRUE'};
if (objFromAccumulator.length) {
objFromAccumulator[0].children.push(newChild);
} else {
acc.push({label: cur[0], children: [newChild]});
}
return acc;
}, []);
console.log(result);
关于javascript - JS 数组到对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59294023/