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

207
Visualizações
¿Cómo hacer coincidir objetos con los mismos pares clave-valor pasados como argumentos?

Esta es una tarea de FreeCodeCamp llamada ¿Por qué eres tú?

Tengo que hacer una función que mire a través de una matriz de objetos (primer argumento) y devuelva una matriz de todos los objetos que tienen pares de nombre y valor coincidentes (segundo argumento). Cada par de nombre y valor del objeto de origen debe estar presente en el objeto de la colección si se va a incluir en la matriz devuelta.

Mi solución pasa todas las comprobaciones además de esta: whatIsInAName([{"a": 1, "b": 2, "c": 3}], {"a": 1, "b": 9999, "c" : 3}) debe devolver []. Y me pregunto por qué la función devuelve la matriz dada en lugar de una vacía. Y si hay una manera de hacer que mi función funcione eventualmente. Mi código estará debajo. ¡GRACIAS POR AYUDAR!

 function whatIsInAName(collection, source) { let arr = []; const sourceKeys = Object.keys(source); for (let key in sourceKeys) { arr = collection.filter( obj => (Object.keys(obj).length >= sourceKeys.length) ? obj.hasOwnProperty(sourceKeys[key]) && obj[sourceKeys[key]] === source[sourceKeys[key]] : 0); } return arr; } whatIsInAName([{"a": 1, "b": 2, "c": 3}], {"a": 1, "b": 9999, "c": 3});
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Podría crear una implementación simple usando Object.keys() y Array.every() .

Esto significa que cada elemento devuelto debe incluir cada clave y valor de la fuente, pero puede incluir claves y valores adicionales:

 function whatIsInAName(collection, source) { return collection.filter(obj => Object.keys(source).every(key => obj[key] === source[key])); } console.log(whatIsInAName([{"a": 1, "b": 2, "c": 3}], {"a": 1, "b": 9999, "c": 3})); console.log(whatIsInAName([{"a": 1, "b": 2, "c": 3}], {"a": 1, "b": 2, "c": 3})); console.log(whatIsInAName([{"a": 1, "b": 2, "c": 3, "d": 4 }], {"a": 1, "b": 2, "c": 3})); console.log(whatIsInAName([{"a": 1, "c": 3, "d": 4 }], {"a": 1, "b": 2, "c": 3}));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Lo siguiente debería funcionar:

 function fltArr(collection, p) { const tst=Object.entries(p); return [...collection].filter(o=> tst.every(([k,v])=>o[k]==v)) // check for each key and value of p } // that they are the same in o[k] const arr=[{a: 1, b: 2, c:3, d:7},{a: 1, b: 2, d: 3}], patterns=[{a: 1, b: 9999, c: 3},{a: 1, b: 2, c: 3},{a: 1, b: 2, d: 3}]; patterns.forEach(p=>console.log(fltArr(arr,p)))

Según entiendo la pregunta, el objeto de colección puede tener propiedades adicionales ( no especificadas en p ) y aún así ser una coincidencia. Por esta razón, el primer elemento coincide con el segundo patrón de prueba.

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