Добавить родительский идентификатор к каждому вложенному дочернему элементу в Javascript - PullRequest
0 голосов
/ 12 июля 2020

Как создать родительский идентификатор и вставить этот идентификатор в каждый вложенный дочерний объект 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 .

1 Ответ

0 голосов
/ 12 июля 2020

Заменить вложенный вызов на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...