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

124
Visualizações
¿Cómo filtro un objeto con un objeto usando Array.filter similar a lodash?

Estoy tratando de evitar importar lodash para un filtro simple. Estoy tratando de hacer algo similar a esto...

 // Items [ { "title": "a", "name": "a", "location": "here"}, { "title": "b", "name": "a", "location": "here"}, { "title": "d", "location": "there"}, ] // Filter { "name" : "a", "location": "here" }

Debería devolver los dos primeros artículos. En lodash esto se hace con algo similar a _.filter(Items, Filter) . Me gustaría implementar esto sin lodash o un montón de código y obtener Object.keys . ¿Hay una manera simple en Javascript moderno para manejar esto?

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

0

Esto es lo que se me ocurrió, parece funcionar bien

 let foo = [ { "title": "a", "name": "a", "location": "here"}, { "title": "b", "name": "a", "location": "here"}, { "title": "d", "location": "there"}, ]; let bar = { "name" : "a", "location": "here" }; let result = foo.filter(obj => Object.entries(bar).every(([k,v]) => obj[k]===v) ); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

No creo que haya una "manera simple en Javascript moderno para manejar esto", pero si no tiene un requisito estricto para evitar Object.keys , puede escribir una función de ayuda para hacer esto:

 const myItems = [ { "title": "a", "name": "a", "location": "here"}, { "title": "b", "name": "a", "location": "here"}, { "title": "d", "location": "there"}, ] const myFilter = { "name" : "a", "location": "here" }; const filter = (items, filterBy) => items.filter(item => Object.keys(filterBy).every(key => item[key] === filterBy[key]) ) alert(JSON.stringify(filter(myItems, myFilter)));

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede obtener las entradas del filtro por adelantado para evitar obtener las entradas para cada iteración de filtrado.

 const filter = (array, filter) => { const filterBy = entries => o => entries.every(([k, v]) => o[k] === v); return items.filter(filterBy(Object.entries(filters))); }, items = [{ title: "a", name: "a", location: "here" }, { title: "b", name: "a", location: "here" }, { title: "d", location: "there"}], filters = { name: "a", location: "here" }, result = filter(items, filters); 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