Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

64
Vistas
Filtrar un objeto en una matriz que requiere 2 criterios

¿Cuál sería la mejor manera de filtrar un objeto en una matriz en función de 2 factores? Pensé que un operador && simple funcionaría, pero me equivoqué.

 {
 email: 'email@email.com',
 accounts: [
 { name: 'Bob', country: 'UK' },
 { name: 'Chris', country: 'USA' },
 { name: 'Bob', country: 'USA' },
 ]
}

Mi filtro original solo se filtraría según las cuentas. nombre! = 'Bob'; sin embargo, esto puede ser problemático ya que podría haber 2 Bobs con diferentes países.

 let filterOut = result.accounts.filter(function (element) {
 return element.name != 'Bob' && element.country != 'UK';
});

¿Cómo podría usar el filtro (si esa es incluso la mejor opción aquí) para lograr el siguiente resultado?

 [
 { name: 'Chris', country: 'USA' },
 { name: 'Bob', country: 'USA' },
]
almost 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede usar un OR (||) para filtrar

 data.accounts.filter(f => f.name != "Bob" || f.country == 'USA');

 let data = {
 email: 'email@email.com',
 accounts: [
 { name: 'Bob', country: 'UK' },
 { name: 'Chris', country: 'USA' },
 { name: 'Bob', country: 'USA' },
 ]
}

let filtered = data.accounts.filter(f => f.name != "Bob" || f.country == 'USA');

console.log(filtered)

almost 4 years ago · Santiago Trujillo Denunciar

0

Está filtrando todos los valores que no son 'Bob' ni 'UK' .

Aquí hay dos posibles soluciones. La respuesta correcta probablemente depende exactamente de lo que significa filtrar "basado en 2 factores".

 const input = {
 email: 'email@email.com',
 accounts: [
 { name: 'Bob', country: 'UK' },
 { name: 'Chris', country: 'USA' },
 { name: 'Bob', country: 'USA' },
 ],
};

// Filter out every value with either name 'Bob' or country 'UK'.
const outputV1 = input.accounts.filter(v => v.name !== 'Bob' || v.country !== 'UK');
console.log(outputV1);

// Filter out every value with name 'Bob' and country 'UK'.
const outputV2 = input.accounts.filter(v => `${v.name}-${v.country}` !== 'Bob-UK');
console.log(outputV2);

almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda