首页 > 解决方案 > 在Javascript中为每个嵌套的孩子添加父ID

问题描述

如何创建父 ID 并将该 ID 插入到 Object 的每个嵌套子代中。我试过这个:

const data = {
  values:[
    {
      name:"test1",
      validation:"",
      values:[{
        name:"nested1",
        validation:"",
        values:[{
          name:"nested2",
          validation:""
        }]
      }]
    },
    {
      name:"test21",
      validation:"N/A",
      values:[{
        name:"nested",
        validation:""
      }]
    }
  ]
}

const iterate = function(value, parentVal){
  value.forEach((ele,idx) => {
    ele.parent = `${parentVal}${idx}`;
    if(ele.values && ele.values.length > 0){
      if(typeof ele.values === "object"){
        parentVal = idx;
        iterate(ele.values, parentVal)
      }
    }
  })
  return value
}

iterate(data.values,0)

我试图为每个孩子添加父引用,例如data.values[0].values[0].values[0]我想将父引用 parentVal 添加为 000,并且对于data.values[0].values[0] parentval 0。

标签: javascriptarraysobject

解决方案


将嵌套调用改为iterate(ele.values, ele.parent)而不是iterate(ele.values, parentVal)应该没问题。

const data = {
  values:[
    {
      name:"test1",
      validation:"",
      values:[{
        name:"nested1",
        validation:"",
        values:[{
          name:"nested2",
          validation:""
        }]
      }]
    },
    {
      name:"test21",
      validation:"N/A",
      values:[{
        name:"nested",
        validation:""
      }]
    }
  ]
}

const iterate = function(value, parentVal){
  value.forEach((ele,idx) => {
    ele.parent = `${parentVal}${idx}`;
    if(ele.values && ele.values.length > 0){
      if(typeof ele.values === "object"){
        parentVal = idx;
        iterate(ele.values, ele.parent)
      }
    }
  })
  return value
}

iterate(data.values,0)
console.log(data)


推荐阅读