在对象数组中查找递归(圆形)id javascript

问题描述 投票:-2回答:1
users= [
{Id: 1, parentId: 2},
{Id: 2, parentId: 3},
{Id: 3, parentId: 4},
{Id: 4, parentId: 1}
]

我有一组对象。在这里,如果数组有,我如何获得循环ID返回true。

1-22-33-44-1

case:finaly,Id 1 parentId不应为1

javascript angular recursion lodash circular-dependency
1个回答
0
投票

您需要遍历“树”并跟踪遇到的所有节点的Id。如果多次遇到给定的Id,则显示错误。

  users = [
    { Id: 1, parentId: 2 },
    { Id: 2, parentId: 3 },
    { Id: 3, parentId: 4 },
    { Id: 4, parentId: 1 },
    { Id: 34, parentId: 34 },
  ]

  var ids = {}
  users.forEach(function (e) {
    if (e.Id == e.parentId) {
      console.log(`${e.Id} has same parent ${e.parentId}`)
    }
    if (ids[e.Id] || ids[e.parentId]) {
      console.log(`For id ${e.Id}, found duplicate parent ${e.parentId}`)
    }
    ids[e.Id] = true
  })
© www.soinside.com 2019 - 2024. All rights reserved.