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

92
Visualizações
Haga coincidir múltiples campos de objetos con un valor de entrada en JS

Estoy trabajando en grandes conjuntos de datos de productos y necesito filtrar la lista de productos según el valor de entrada del usuario. El conjunto de datos de mi producto se parece a esto:

 const products = [ {id: 0, name: "Product1", brand: "Theraflu", itemCode: "THE110", price: 5.45}, {id: 1, name: "Product2", brand: "Benadryl", itemCode: "BEN121", price: 7.05}, {id: 2, name: "Product3", brand: "Listerine", itemCode: "LIS204", price: 4.55}, {id: 3, name: "Product4", brand: "Tylenol", itemCode: "TYL116", price: 6.10}, ];

Pude filtrar la lista de productos según los diferentes campos disponibles en cada objeto de producto individual como este:

 const keys = ["name", "brand", "itemCode"]; const getFilteredProducts = (filterText) => { const newProducts = products.filter(product => keys.some(key => product[key].toLowerCase().includes(filterText.toLowerCase()))); return newProducts; } console.log(getFilteredProducts("Tylenol"));

Este código realmente funciona cuando filtro el producto según el campo individual. Sin embargo, cuando trato de combinar diferentes campos como:

 console.log(getFilteredProducts("product4 Tylenol"));

El valor devuelto de esto es una matriz vacía. ¿Hay alguna manera de lograr esto sin alterar la funcionalidad de filtrado existente?

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Parece que tendrá que buscar cada palabra del filterText por sí solo. Tal vez algo como esto:

 const keys = ["name", "brand", "itemCode"]; const getFilteredProducts = (filterText) => { const filterWords = filterText.split(" "); const newProducts = []; for (const word of filterWords) { newProducts.push( products.filter(product => keys.some(key => product[key].toLowerCase().includes(word.toLowerCase()) )) ); } return [].concat(...newProducts).filter((value, index, self) => self.findIndex((m) => m.id === value.id) === index ); } console.log(getFilteredProducts("Tylenol Product3"));
about 4 years ago · Santiago Gelvez 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