增加数组的长度

arr = [
      {
        type: 1,
        children: [
          {
            id: 1,
            name: 'A'
          },
          {
            id: 2,
            name: 'B'
          },
          {
            id: 4,
            name: 'G'
          }
        ]
      },
      {
        type: 2,
        children: [
          {
            id: 3,
            name: 'A'
          },
          {
            id: 4,
            name: 'B'
          },
          {
            id: 5,
            name: 'G'
          }
        ]
      }
    ]
arr2 = [
      {
        type: 1,
        children: [
          {
            id: 1,
            name: 'A'
          },
          {
            id: 2,
            name: 'B'
          },
          {
            id: 3,
            name: ''
          },
          {
            id: 4,
            name: 'G'
          },
          {
            id: 5,
            name: ''
          },
          {
            id: 6,
            name: ''
          },
          {
            id: 7,
            name: ''
          },
        ]
      },
      {
        type: 2,
        children: [
          {
            id: 1,
            name: ''
          },
          {
            id: 2,
            name: ''
          },
          {
            id: 3,
            name: 'A'
          },
          {
            id: 4,
            name: 'B'
          },
          {
            id: 5,
            name: 'G'
          },
          {
            id: 6,
            name: ''
          },
          {
            id: 7,
            name: ''
          },
        ]
      }
    ]

有一个数组arr, 有一个长度值 7, arr里的每一项都有一个children, children的id 值固定从1到长度值(7),现在arr数组中children,比如arr[0]de children有了几个子对象,但id只有, 1,2,4,还差 id为3,5,6的,arr[1]的children的id 还差1,2,6的,怎么样去填充, 让arr 变成arr2

阅读 1.3k
1 个回答
// 先生成需要的结果中可能存在的所有 id,也就是 1 ~ 7
const ids = Array.from(Array(7), (_, i) => i + 1);

// 对 arr 进行映射处理
const arr2 = arr.map(it => {
    const { children } = it;
    return {
        // 保有原来的元素属性
        ...it,
        // 改变 children,通过 ids.map 获取每一个 id 对应的项
        children: ids.map(id => ({
            id,
            // 这个项的 name 是从原来的 children 里去找的,如果没找到给个 ""
            name: children.find(child => child.id === id)?.name ?? ""
        }))
    };
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题