es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar datos específicos a hijos anidados en la librería de JavaScript he-tree-vue.

Lo siguiente es un ejemplo de una matriz de objetos, donde los datos consisten en cuatro niveles de datos anidados.

Aquí muestro los datos secundarios en he-tree-vue cuando el usuario presiona el interruptor en un elemento específico, y luego realiza una solicitud a la API, para que más tarde los datos se agreguen a un valor de matriz específico según los datos existentes para ser mostrados como datos secundarios.

[{ // clase
ClassID:”0ede11″,
Title:”Mandiri”,
children:[{ // curso/materia
CourseID:”0ec2″,
Title:”Matemáticas”,
children:[ // capítulo
{
ChapterId:”0ss23″,
Title:”Prueba prueba”,
},
{
ChapterId:”0ss23″,
Title:”Prueba prueba”
},
{
ChapterId:”0se22″,
Title:”Prueba prueba”
},
]
},
{
CourseID:”rere43″,
Title:”Historia”,
children:[
{
ChapterId:”0sse56″,
Title:”Prueba prueba”,
},
{
ChapterId:”0ss2qqq3″,
Title:”Prueba prueba”
},
{
ChapterId:”0sefg22″,
Title:”Prueba prueba”
},
]
}
]
}]

¿Cómo agrego datos a niños específicos? Aquí uso la biblioteca he-tree-vue para mostrar un árbol de datos que se puede arrastrar.

Ahora uso el siguiente código, pero solo funciona en el primer hijo.

getChapter(id, index) {
this.API.getChapter(id, (data) => {
console.log(data);
// Todavía estoy confundido en esta parte, ¿cómo agrego datos dinámicamente a datos secundarios específicos en cada nivel?
const newData = […this.playlistData];
newData[index].children[index].children = data;
this.playlistData = newData;
},
(err) => {
console.log(err);
});
}

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar datos a un hijo específico en cada nivel, es necesario recorrer la estructura de datos anidados y encontrar el hijo específico al cual deseas agregarle datos. Puedes hacer esto utilizando una función recursiva que tome el nivel actual de los datos, así como también el ID del hijo objetivo al cual deseas agregar datos. Aquí te mostramos una función de ejemplo que puedes utilizar:

    function addChildData(data, targetChildId, newData) {
        for (let i = 0; i < data.length; i++) {
            const currentChild = data[i];
    
            if (currentChild.children) {
                addChildData(currentChild.children, targetChildId, newData);
            }
    
            if (currentChild.ChapterId === targetChildId) {
                currentChild.children = newData;
                break;
            }
        }
    }
    

    Esta función toma tres argumentos: data, que representa la estructura de datos anidados, targetChildId, que es el ID del hijo al que deseas agregar los datos, y newData, que son los datos que deseas agregar al hijo objetivo.

    La función verifica cada hijo en el nivel actual de los datos y llama recursivamente la misma función en los hijos de cada hijo hasta que encuentre al hijo objetivo con el ID coincidente. Una vez que encuentra al hijo objetivo, agrega los nuevos datos a su array de hijos y rompe el ciclo.

    Para utilizar esta función en tu código, puedes reemplazar la línea donde estás estableciendo newData[index].children[index].children = data; con addChildData(this.playlistData, targetChildId, data); donde targetChildId es el ID del hijo al que deseas agregar datos.

Comments are closed.