He anidado una matriz de objetos como a continuación:
const data = [ {text: 'node 1'}, {text: 'node 2', chapter_playlist: [{text: 'node 2-1', lesson_playlist: [{text: 'node 3-1'}]}]}, {text: 'node 3'}, {text: 'node 4', chapter_playlist: [{ text: 'node 4-1' }]} ]¿Cómo cambiar el nombre de cada propiedad anidada como chapter_playlist , lección_playlist a ' niños '?
básicamente quiero cambiar el nombre de la propiedad que tiene más niños, si no hay niños entonces no hay necesidad de cambiarlo. Y todavía estoy confundido sobre cómo cambiarlo.
Resultados previstos
const data = [ {text: 'node 1'}, {text: 'node 2', children: [{text: 'node 2-1', children: [{text: 'node 3-1'}]}]}, {text: 'node 3'}, {text: 'node 4', children: [{ text: 'node 4-1' }]} ]Dato curioso: si necesita caminar a través de un objeto por cualquier motivo, JSON.stringify() es su amigo.
No porque desee convertir sus datos en una cadena JSON, sino porque también es un iterador de objetos que le permite realizar un procesamiento arbitrario en todos los niveles mediante una función de reemplazo:
const data = [ {text: 'node 1'}, {text: 'node 2', chapter_playlist: [{text: 'node 2-1', lesson_playlist: [{text: 'node 3-1'}]}]}, {text: 'node 3'}, {text: 'node 4', chapter_playlist: [{ text: 'node 4-1' }]} ] const rewriteList = [`chapter_playlist`, `lesson_playlist`]; function replacer(key, value) { // If the value at this depth is an object (but not an iterable // like array or Set or Map), then rebind the properties you // need rebound, provided they exist: if (typeof value === `object` && !value[Symbol.iterator]) { rewriteList.forEach(prop => { if (value[prop]) { // By editing "value", we're directly updating "data". value.children = value[prop]; delete value[prop]; } }); } return value; } JSON.stringify(data, replacer); console.log(data)