Выполните итерацию по json с иерархическими дочерними элементами и добавьте пару ключ-значение - PullRequest
0 голосов
/ 12 июня 2019

Я хочу преобразовать существующие данные в другие. Пожалуйста, найдите ниже существующий код и ожидаемый код.

Существующий:

{ "title": "title1", "ребенок": [ { "title": "Заголовок", «Ребенок»: [ { "title": "test", «Ребенок»: [ { "title": "testchild",

            },
           {
              "title": "Descriptionchild",
            }
             ]

            },
            {
                "title": "Description",
            }
        ]
    }
]

}

Ожидаемый:

{ "title": "title1", "customId": "title1-xx" "ребенок": [ { "title": "Заголовок", "customId": "Header1-xx", «Ребенок»: [ { "title": "test", "customId": "test1-xx", «Ребенок»: [ { "title": "testchild", "customId": "testchild1-xx"

                        },
                        {
                            "title": "Descriptionchild",
                            "customId": "Descriptionchild1-xx"
                        }
                    ]

            },
            {
                "title": "Description",
                "customId": "Description1-xx"
            }
        ]
    }
]

}

1 Ответ

0 голосов
/ 12 июня 2019

Мы можем определить функцию, которая принимает массив и рекурсивно добавляет этот атрибут:

// input must be array
function recursivelyAddCustomId(input) {
  // if input is not empty i.e. child is not empty
  if (input != null) {
    // for each child object in array
    for (let obj of input) {
      // set custom id
      if (obj.title != null) {
        obj.customId = obj.title + '-xx';
      }
      // recurse (doesn't matter if child exists)
      recursivelyAddCustomId(obj.child);
    }
  }
}
// put input as array
recursivelyAddCustomId([input]);
console.log(input);

Обратите внимание, что входные данные для этой функции должны быть массивом, поэтому первый объект должен быть сначала преобразован в массив.

Пожалуйста, дайте мне знать, если мне нужно что-то уточнить.

Примечание: Комментарии сделаны в кодовом блоке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...