如何将 JavaScript 对象转换为包含嵌套 childList 的对象数组?

如何将 JavaScript 对象转换为包含嵌套 childList 的对象数组?

javascript 对象转换为对象数组

问题:

如何转换以下原始 JavaScript 对象为具有以下格式的对象数组?

原始对象:

const obj = {
  "a": ["a1", "a2"],
  "b": ["b1", "b2", "b3"],
  // ......
};

目标对象数组:

const list = [
  {
    id: 1,
    name: 'a',
    childList: [
      { id: 3, name: 'a1' },
      { id: 4, name: 'a2' },
    ]
  },
  {
    id: 2,
    name: 'b',
    childList: [
      { id: 5, name: 'b1' },
      { id: 6, name: 'b2' },
      { id: 7, name: 'b2' },
    ]
  }
];

解决方案:

使用 Object.entries() 和 reduce() 方法:

let obj = {
  "a": ["a1", "a2"],
  "b": ["b1", "b2", "b3"],
  // ......
};
let id = 1;
Object.entries(obj).reduce((acc, [name, val]) => {
  acc.push({
    id: id++,
    name,
    childList: val.map(name => ({ id: id++, name })),
  });
  return acc;
}, []);

结果:

此代码将生成与目标对象数组相同的对象数组。

以上就是如何将 JavaScript 对象转换为包含嵌套 childList 的对象数组?的详细内容,更多请关注www.sxiaw.com其它相关文章!