Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
¿Cómo puedo encontrar el padre del objeto anidado? (Javascript)

Tengo un objeto anidado. Necesito una función. Necesito usarlo para encontrar la "clave principal". ¿Qué función debo usar para ello? Mis datos :

 [{ "Name": "Main Menu", "Key": "1", "Children": [{ "Name": "Sub Menu 1", "Key": "10", "Children": [{ "Name": "Very Sub Menu", "Key": "20", "Children": [] }] }] }, { "Name": "Main Menu 2", "Key": "2", "Children": [{ "Name": "Sub Menu 2", "Key": "11", "Children": [{ "Name": "Very Sub Menu 2", "Key": "21", "Children": [{ "Name": "Extra Small Menu", "Key": "30", "Children": [] }] }] }] } ]

Por ejemplo, cuando envío mi matriz y clave (por ejemplo, "10" (Submenú 1) para ese ejemplo), necesito tomar 1 como resultado (Tecla de menú principal).

Ejemplo 2: Si doy 30 como clave; Necesito tomar 21 como resultado. Cómo puedo hacerlo ? ¡Gracias por las respuestas!

Intenté como:

 var res = myData.filter(function f(o) { if (o.key === dragKey) return true; if (o.children) { return (o.children = o.children.filter(f)).length; } }); console.log(res); // Its giving main whole data main level to child level. I need just 1 upper level data.
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podrías usar la recursividad para esto. Bucle a través del objeto con

 const findObjectByKey = (parent, object, key) => { // make object optional because the first iteration is null if (object?.key === key) return parent for (const obj of Object.entries(object.children)) { return findObjectByKey(object, obj, key) } } const finalparent = findObjectByKey(null, object, 30)

NOTA: Este es un pseudocódigo no probado solo para darle una idea de cómo lo resolvería.

about 4 years ago · Juan Pablo Isaza Relatório

0

Debe escribir una función recursiva que tome una matriz como entrada. Recorra los elementos de la matriz y verifique si la clave coincide, si lo hace, devuelve un resultado que declara que ha encontrado al niño. Luego, en el padre, devuelva la identificación del padre en cada llamada para que tenga la identificación del padre al final. De lo contrario, llama a la función misma con los hijos del nivel actual. Espero que entiendas la idea detrás de esto. Si no sabe cómo funcionan las funciones recursivas, simplemente búsquelo en Google y apréndalo.

about 4 years ago · Juan Pablo Isaza Relatório

0

Lo que haría es usar la recursividad para revisar cada objeto anidado y verificar si hay some niños con la clave que está buscando.

 function getParentKey(arr, key, index = 0) { if (!Array.isArray(arr[index].Children)) return; if (arr[index].Children.some(child => child.Key === key)) return arr[index].Key; return getParentKey(arr[index], key, index + 1); } console.log(getParentKey(mydata, "10"));

Aquí un ejemplo de trabajo

 const mydata = [{ "Name": "Main Menu", "Key": "1", "Children": [{ "Name": "Sub Menu 1", "Key": "10", "Children": [{ "Name": "Very Sub Menu", "Key": "20", "Children": [] }] }] }, { "Name": "Main Menu 2", "Key": "2", "Children": [{ "Name": "Sub Menu 2", "Key": "11", "Children": [{ "Name": "Very Sub Menu 2", "Key": "21", "Children": [{ "Name": "Extra Small Menu", "Key": "30", "Children": [] }] }] }] }] function getParentKey(arr, key, index = 0) { if (!Array.isArray(arr[index].Children)) return; if (arr[index].Children.some(child => child.Key === key)) return arr[index].Key; return getParentKey(arr[index], key, index + 1); } console.log(getParentKey(mydata, "10"));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda