二维数组对象如何转化一维数组对象

510 阅读1分钟

二维数组结构

const arr = [
  {id: 1, name: 'A'},
  {id: 2, name: 'B',children: [
    {child_id: 1, child_name: 'C_A'},
    {child_id: 2, child_name: 'C_B'}
   ]},  {id: 3, name: 'C'},

]

转化为

一维数据结构

const arr = [
  {id: 1, name: 'A'},
  {id: 2, name: 'B', child_id: 1, child_name: 'C_A'}
  {id: 2, name: 'B', child_id: 2, child_name: 'C_B'},  
  {id: 3, name: 'C'},

]

您可以使用循环遍历原始数组并将每个对象转换为相应的形式,然后将其添加到一个新的数组中。以下是一个示例实现:

const arr = [
  {id: 1, name: 'A'},
  {id: 2, name: 'B',children: [
    {child_id: 1, child_name: 'C_A'},
    {child_id: 2, child_name: 'C_B'}
   ]},  
  {id: 3, name: 'C'},
];

const newArr = [];

for (let i = 0; i < arr.length; i++) {
  const obj = arr[i];
  if (obj.children) {
    for (let j = 0; j < obj.children.length; j++) {
      const child = obj.children[j];
      newArr.push({
        id: obj.id,
        name: obj.name,
        child_id: child.child_id,
        child_name: child.child_name,
      });
    }
    // 删除 children 属性以保持一维结构
    delete obj.children;
  }
  newArr.push(obj);
}

console.log(newArr);

输出结果

[
  { id: 1, name: 'A' },
  { id: 2, name: 'B', child_id: 1, child_name: 'C_A' },
  { id: 2, name: 'B', child_id: 2, child_name: 'C_B' },
  { id: 3, name: 'C' }
]