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

166
Visualizações
Filtrar matriz de objetos por matriz dada

Tengo una variedad de objetos en los que necesito filtrar por estado

 const data = [ { id:1, name:"data1", status: { open:1, closed:1, hold:0, block:1 } }, { id:2, name:"data2", status: { open:1, closed:0, hold:4, block:1 } }, { id:3, name:"data3", status: { open:0, closed:0, hold:4, block:0 } } ]

los estados están en una matriz

 const statuses = ['open','closed']

Tendría que filtrar todos los datos que contengan un estado abierto y cerrado mayor que 0. Entonces, el resultado sería

 const result = [ { id:1, name:"data1", status: { open:1, closed:1, hold:0, block:1 } }]

Este es mi intento,

 const result = data.filter(item => { return ( statuses.forEach(val => { if (item.status[val] > 0) return item }) ) })

Estoy seguro de que me estoy perdiendo algo aquí y agradecería cualquier tipo de ayuda. Gracias

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

0

Puede lograr su objetivo utilizando todos los métodos en lugar de forEach , así:

 const data = [ { id:1, name:"data1", status: { open:1, closed:1, hold:0, block:1 } }, { id:2, name:"data2", status: { open:1, closed:0, hold:4, block:1 } }, { id:3, name:"data3", status: { open:0, closed:0, hold:4, block:0 } } ]; const statuses = ['open','closed']; const result = data.filter( ({status}) => statuses.every(key => status[key] > 0) ); console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

Suponiendo que open y close siempre son iguales o mayores que 0 :

 const data=[{id:1,name:"data1",status:{open:1,closed:1,hold:0,block:1}},{id:2,name:"data2",status:{open:1,closed:0,hold:4,block:1}},{id:3,name:"data3",status:{open:0,closed:0,hold:4,block:0}}]; let result = data.filter(e => e.status.open && e.status.closed) console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

Pruebe este enfoque:

 const opened = data.filter((item) => item.status.open === 1);

puede agregar su propio filtro de control interno. devolverá una matriz con el objeto encontrado.

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