javascript - JS 数组到对象的数组

标签 javascript arrays object multi-select

我有一个 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/

相关文章:

javascript - 从对象数组渲染多个 JSX 元素

类型对象上的 Java 方法调用

javascript - AWS cognito 用户名存在异常

javascript - 如何使用过滤值从旧对象创建新对象

python - 使用 C++ 和 Python 访问数组

c - 对指向指针 "array"的指针的单个 malloc 调用导致无效写入

javascript - 如何更改jqPlot lineLabels的值

javascript - 添加 "li "项目以选择作为选项

javascript - 我如何获得 num 的值?

c++ - C++ 中的 "new"关键字有什么问题?