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

196
Vistas
¿Cómo hacer que la función de filtro no se detenga al principio sea falsa?

Estoy tratando de filtrar una matriz de objetos comparándola con otra matriz recorriendo sus valores. El problema es que la función de filtro se detiene en el primer falso de forma predeterminada, por lo que si el bucle devuelve (falso, verdadero, falso) no pasará el filtro.

¿Hay alguna forma de evitar esto?

código (he puesto matrices y objetos simplificados en el código para el ejemplo):

 const jobs = [ {id: 1, location: 'AA'}, {id: 2, location: 'BB'}, {id: 3, location: 'CC'}, ] const filteredLocations = ['AA', 'CC'] const filteredJobs = jobs.filter(function(el, i) { do { return el.location === filteredLocations[i]; } while (filteredLocations.length >= i) }) // this only returns the first object instead of the desired first and third

¡Gracias!

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Use la función .filter como se pretende, cualquier devolución se agregará a la matriz devuelta.

 const jobs = [ {id: 1, location: 'AA'}, {id: 2, location: 'BB'}, {id: 3, location: 'CC'}, ] const filteredLocations = ['AA', 'CC'] const filteredJobs = jobs.filter(el => { return filteredLocations.includes(el.location); });

nota al margen, su código tiene 2 problemas:

  1. puede devolver falso dentro del bucle while, si no coincide con la primera aparición, por lo tanto, ¿por qué la única salida que tenía?
  2. comparas filteredLocations.length con la i (índice) del bucle de matriz de jobs , los jobs y las filteredLocations son 2 matrices diferentes, por lo que no tiene sentido hacerlo
about 4 years ago · Santiago Gelvez Denunciar

0

El filtro no se detiene al principio falso. Funciona correctamente pero no puede devolver el primer y el tercer objeto porque el tercer objeto está en el índice 2 y no tiene ningún elemento en filteredLocations en ese índice.

about 4 years ago · Santiago Gelvez Denunciar

0

Le aconsejo que reemplace el bucle do - while con una función de búsqueda simple de la siguiente manera:

 const jobs = [ {id: 1, location: 'AA'}, {id: 2, location: 'BB'}, {id: 3, location: 'CC'}, ] const filteredLocations = ['AA', 'CC'] const filteredJobs = jobs.filter(function(el, i) { return filteredLocations.find((filteredLocation) => filteredLocation === el.location); }) console.log(filteredJobs);

about 4 years ago · Santiago Gelvez 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