首页 > 解决方案 > 如何将与父级相同的 id 应用于同一级别的子级数组?

问题描述

我有以下对象

[
    { name: "parent", id: 1 },
    { name: "children", id: 2 },
    { name: "children", id: 3 },
    { name: "parent", id: 4 },
    { name: "children", id: 5 }
]

如您所见,父母和孩子都处于同一级别。我需要做的是将子级与父级连接起来,将父级 ID 应用于具有新属性的子级数组。像这样的东西:

[
    { name: "parent", id: 1 },
    { name: "children", id: 2, parentId: 1 },
    { name: "children", id: 3, parentId: 1 },
    { name: "parent", id: 4 },
    { name: "children", id: 5, parentId: 4 },
    { name: "children", id: 6, parentId: 4 }
]

到目前为止,我还没有能够实现这个问题的逻辑。对此问题的任何帮助将不胜感激。

提前致谢!

标签: javascriptarraysloopsobjectlogic

解决方案


您需要遍历您的数组并存储最后遇到的父 id,以便能够将其应用于每个后续子

const data = [
    { name: "parent", id: 1 },
    { name: "children", id: 2 },
    { name: "children", id: 3 },
    { name: "parent", id: 4 },
    { name: "children", id: 5 }
]

let lastParentId = null
data.forEach(el => {
  if (el.name === "parent") {
    lastParentId = el.id
  } else {
    el.parentId = lastParentId
  }
})

console.log(data)


推荐阅读