Estoy siguiendo el ejemplo de este enlace Construir matriz de árbol de JSON en JavaScript para generar mi salida de árbol deseada. Lo que quería hacer era hacer que el valor de la propiedad "nombre" fuera el nombre de la propiedad en sí y eliminar la propiedad del código del resultado. Traté de jugar con él, pero tengo un poco de conocimiento sobre cómo funciona.
Enlace Codepen: árbol json
Aquí está mi resultado deseado:
[ { "one": "default value", "children": [ { "one one": "default value" }, { "one two": "default value" } ] }, { "two": "default value" }, { "three": "default value" } ]En lugar de usar
el construya un nuevo objeto con un nombre de propiedad calculado y tome la referencia de map[el.code] más adelante en
map[parent].children.push(map[el.code]); const arr = [{ code: "1", name: "one" }, { code: "1.1", name: "one one" }, { code: "1.2", name: "one two" }, { code: "2", name: "two" }, { code: "3", name: "three" }], transformToTree = (arr, root = '') => { let map = {}, last = [root], level = 0; map[root] = {}; arr.forEach(el => { let parent = root; while (level && last[level].length >= el.code.length) level--; parent = last[level]; level++; last.length = level; last.push(el.code); map[el.code] = { [el.name]: 'default value' }; map[parent].children = map[parent].children || []; map[parent].children.push(map[el.code]); }); return map[root].children; }; console.log(transformToTree(arr)); .as-console-wrapper { max-height: 100% !important; top: 0; }