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

83
Vistas
Cómo detener la iteración de la función de filtro de javascript

mi código es el siguiente

 sortedProducts = sortedProducts.filter((product, i) => { if (i + 1 > limit) { return false; } return product.name.startsWith(search); });

quiero dejar de iterar en el index = limit para poder optimizar mi función porque no hay necesidad de elementos con index > limit ¿hay algo similar a la palabra break en este caso? Gracias por adelantado

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

0

Array#filter ejecuta la devolución de llamada en cada elemento:

La función es un predicado, para probar cada elemento de la matriz. Devuelve un valor que fuerza a verdadero para mantener el elemento, o a falso en caso contrario.

Por lo tanto, en lugar de iterar innecesariamente sobre el resto de los elementos, puede obtener el subarreglo primero usando Array#slice :

 sortedProducts = sortedProducts .slice(0, limit) .filter(product => product.name.startsWith(search));

Otra forma de "romperse" realmente del bucle:

 const arr = []; for(let i = 0; i < sortedProducts.length; i++) { if (i + 1 > limit) { break; } if(sortedProducts[i].name.startsWith(search)) { arr.push(sortedProducts[i]); } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si desea usar métodos de Array.prototype y atajarlos, puede usar Array.prototype.some

 const collection = []; sortedProducts .some(function(product,i){ if(this.length >= limit){ return 1; } if(product.name.startsWith(search)){ this.push(product) } },collection)

Estoy pasando una matriz como this a some método. También puede hacer esto con map , forEach , every , etc.

En lugar de this.length , puede adjuntar una propiedad arbitraria como this._iteration e incrementar eso, etc. Otra opción es dividir la matriz como sugirió @Majed, o simplemente usar un buen bucle antiguo y romper con eso.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma más eficiente es procesar sus arreglos como iterables. De esa manera, siempre iterará a través de los valores solo una vez, mientras aplica la cantidad de operaciones que desee.

El siguiente ejemplo se basa en la biblioteca iter-ops :

 import {pipe, filter, take} from 'iter-ops'; // define your sortedProducts, + search + limit here; const result = pipe( sortedProducts, filter(product => product.name.startsWith(search)), take(limit) ); console.log([...result]); // prints your found products
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