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

242
Vistas
Filtrado de matriz con múltiples condiciones (javascript/mecanografiado)?

En este momento tengo una serie de objetos

 array = [ { text: 'Example 1', colorCode: '1' }, { text: 'Example 2', colorCode: '2' }, { text: 'Example 3', colorCode: '3' }, text: 'Example 4', colorCode: '3' } ]

entonces tengo una serie de filtros

 filters = [1, 3]

Estoy intentando escribir una función que devuelva una matriz basada en los filtros proporcionados, por lo que este ejemplo devolvería una matriz de objetos que contienen el ejemplo 1, el ejemplo 2 y el ejemplo 4.

Actualmente estoy creando una matriz y recorriendo los filtros uno a la vez. Algo como esto

 let filteredArray = []; filters.forEach((x: number) => { filteredArray = filteredArray.concat(_.filter(this.array, {colorCode: x})) })

Sin embargo, esto parece redundante ya que tengo que recorrer la matriz para cada filtro, y llevará más tiempo a medida que crezca la matriz. Recorro la matriz y encuentro todos los códigos de color === 1, luego recorro la matriz y encuentro todos los códigos de color === 3. ¿Hay alguna manera de recorrer la matriz solo una vez y verificar si cada objeto.colorCode = == 1 || objeto.colorCode === 3.

Mi problema con esta función es que la matriz de filtros cambia constantemente en valores y tamaño, por lo que la función debe tener en cuenta eso en lugar de pasar valores estáticos.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar el filter para eliminar los elementos cuya propiedad colorCode no está incluida en la matriz de filters .

 let array=[{text:"Example 1",colorCode:"1"},{text:"Example 2",colorCode:"2"},{text:"Example 3",colorCode:"3"},{text:"Example 4",colorCode:"3"}]; const filters = [1, 3] let result = array.filter(e => filters.includes(+e.colorCode)) console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede comenzar con los valores de colorCode , filtrar por cada valor y luego aplanar la matriz resultante.

 const array=[{text:"Example 1",colorCode:"1"},{text:"Example 2",colorCode:"2"},{text:"Example 3",colorCode:"3"},{text:"Example 4",colorCode:"3"}]; const filters = [1, 3] const result = [].concat( ...filters.map(f => array.filter(({colorCode:c}) => +c === f)) ); console.log( result );

about 4 years ago · Juan Pablo Isaza 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