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

153
Visualizações
Encuentre todos los pares clave-valor y devuelva la ruta donde está el par en objetos anidados profundos en JS

Estoy tratando de crear una función que debe hacer lo siguiente:

  • toma un objeto JavaScript como primer parámetro

  • el objeto puede tener cualquier estructura y profundidad

  • toma una cadena que contiene una clave como segundo parámetro

  • devuelve un mapa con todos los valores que se encuentran para esa clave dentro del objeto o la clave en el mapa resultante será la ruta a la clave dentro del objeto donde "/" se usa como separador o la clave raíz para el mapa es el nombre del objeto

el resultado tiene que ser algo como:

 let obj = { id: 1, b: "value", c: 404, d: { id: "value", b: { id: 1, b: 2 } }, }; myFunction(obj, 'id') // [ ["" -> 1] ["d" -> "value"] ["d/b" -> 1] ]

Estoy haciendo lo siguiente:

 let **findAllByKey** = (obj, keyToFind) => Object.entries(obj).reduce( (acc, [key, value]) => key === keyToFind ? acc.concat(value) : typeof value === "object" ? acc.concat(findAllByKey(value, keyToFind)) : acc, [] ); console.log(findAllByKey(obj, "id"));

Pero esto solo devuelve los valores, y tengo problemas para obtener la ruta: "/d/b", y dice que debe hacerse con un constructor de mapas ( New Map() ), pero con el mapa, no tengo ni idea. cómo hacerlo.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede obtener las entradas e iterar comprobando los valores.

 const getPathes = (object, key) => Object .entries(object) .reduce((r, [k, v]) => { if (!v || typeof v !== 'object') return r; r.push(...getPathes(v, key).map(([l, v]) => [k + (l && '/') + l, v])); return r; }, key in object ? [['', object[key]]] : []), object = { id: 1, b: "value", c: 404, d: { id: "value", b: { id: 1, b: 2 } } }; console.log(getPathes(object, 'id')); // [["", 1], ["d", "value"], ["d/b" , 1]]

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar la biblioteca jsonpath .

Muestra:

 const jp = require('jsonpath'); const result = jp.nodes(obj, '$..id');

Resultado:

 [ { path: [ '$', 'id' ], value: 1 }, { path: [ '$', 'd', 'id' ], value: 'value' }, { path: [ '$', 'd', 'b', 'id' ], value: 1 } ]

Después de eso, obtiene objetos con propiedades de path y value y puede transformar el resultado como desee.

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