Obtener el valor de la clave de la matriz y pasarlo a los niños en el objeto clave

j.doe:

Tengo estructura, como a continuación:

{
  0: [{
    "id": "1",
    "parentId": "root",
    "path": "root"
    "children": [{
      "id": "2",
      "parentId": "1",
      "path": "1/2",
      "children": [
        "id": "4",
        "parentId": "2",
        "path": "2/4"
      ]
    }, {
      "id": "3",
      "parentId": "1",
      "path": "1/3"
    }]
  }]
}

Tengo clave "path"y ahora es "parentId/id", pero me gustaría tener camino de la raíz a este elemento, por lo que debe miradas "root/parentId/id/parentId/it..."etc. Por ejemplo ruta: "root/1/2/4".

¿Cómo puedo poner dinámicamente una llave dentro valor "path"para obtener la ruta completa al elemento raíz?

Guerrico P:

Su estructura de datos no respeta la infancia de cada elemento, pero teniendo en cuenta que esto no es una parte de la pregunta, aquí hay una solución recursiva simple:

const data = [{
    "id": "1",
    "parentId": "root",
    "path": "root",
    "children": [{
        "id": "2",
        "parentId": "1",
        "path": "1/2",
        "children": [{
            "id": "4",
            "parentId": "2",
            "path": "2/4"
          }
        ]
      }, {
        "id": "3",
        "parentId": "1",
        "path": "1/3"
      }
    ]
  },
  {
    "id": "4",
    "parentId": "2",
    "path": "2/4"
  }
];

function assignPath(tree, index, array, currentPath) {
  tree.path = currentPath || 'root';
  tree.children && tree.children.forEach(child => {
    assignPath(child, null, null, `${tree.path}/${child.id}`);
  });
}

data.forEach(assignPath);

console.log(data);

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=418349&siteId=1
Recomendado
Clasificación