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

118
Visualizações
Intersección de una matriz con un objeto profundamente anidado en javascript

Quiero incluir todas las claves de un objeto presente en una matriz y descartar el resto, por ejemplo, si tengo una matriz ,

 const arr = ['apple', 'milk', 'bread', 'coke'];

y un objeto ,

 const dummy = { apple: { category: 'fruit' }, banana: { category: 'fruit' }, potato: { category: 'vegetable' }, dairy: { milk: { type: 'A2' } }, bakery: { bread: { type: 'brown' } }, beverage: { cold_drink: { coke: { type: 'diet' }, beer: { } } } }

Quiero que mi objeto resultante contenga solo las claves de arr , ya sean claves directas o profundamente anidadas. Entonces, para el caso anterior, mi objeto resultante se verá así,

 { apple: { category: 'fruit' }, dairy: { milk: { type: 'A2' } }, bakery: { bread: { type: 'brown' } }, beverage: { cold_drink: { coke: { type: 'diet' }, beer: {} } } }

Estoy tratando de resolver esto a través de la recursividad , pero no puedo obtener el resultado correctamente. A continuación se muestra mi código, ¿podría ayudarme con dónde me estoy equivocando?

 function fetchResultantObject(object, key, result) { if(typeof object !== 'object') return null; for(let objKey in object) { if(key.indexOf(objKey) > -1) { result[objKey] = object[objKey]; } else { result[objKey] = fetchValueByKey(object[objKey], key, result); } } return result; } console.log(fetchResultantObject(dummy, arr, {}));
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede filtrar las entradas y verificar si los objetos (anidados) contienen una clave deseada.

 const hasKey = object => object && typeof object === 'object' && (keys.some(k => k in object) || Object.values(object).some(hasKey)), keys = ['apple', 'milk', 'bread', 'coke'], data = { apple: { category: 'fruit' }, banana: { category: 'fruit' }, potato: { category: 'vegetable' }, dairy: { milk: { type: 'A2' } }, bakery: { bread: { type: 'brown' } }, beverage: { cold_drink: { coke: { type: 'diet' } } } }, result = Object.fromEntries(Object .entries(data) .filter(([k, v]) => hasKey({ [k]: v })) ); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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