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

456
Vistas
¿Por qué este método Array.prototype.reduce no funciona?
function dropElements(arr, func) { let output = arr.reduce((acc=[], elem) => { if (func(elem)){ acc.push(arr.slice(arr.indexOf(elem))) return acc } }, []) return output } let tester = dropElements([1, 2, 3, 4,5,6,3,2,1], function(n) {return n >= 3;}) console.log(tester)

Quiero que genere [3,4,5,6,3,2,1]. Pero está imprimiendo copias de matrices decrecientes de tamaño.

La declaración del problema: "Dada la matriz arr, itere y elimine cada elemento comenzando desde el primer elemento (el índice 0) hasta que la función func devuelva verdadero cuando el elemento iterado se pasa a través de él".

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

0

Puede usar Array#slice junto con Array#findIndex para encontrar el primer índice en el que la función de devolución de llamada devuelve true .

 function dropElements(arr, func) { const idx = arr.findIndex(func); return idx >= 0 ? arr.slice(idx) : []; } console.log(dropElements([1, 2, 3, 4, 5, 6, 3, 2, 1], n => n >= 3));

Si desea usar específicamente Array#reduce , puede usar una variable para almacenar si la devolución de llamada se ha vuelto verdadera o no para cualquier elemento hasta el momento.

 function dropElements(arr, func) { let found = false; return arr.reduce((acc, elem) => { found = found || func(elem); if (found) acc.push(elem); return acc; }, []); } console.log(dropElements([1, 2, 3, 4, 5, 6, 3, 2, 1], n => n >= 3));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Utilice el método shift para eliminar el primer elemento de la matriz hasta que la matriz esté vacía o func(arr[0]) devuelva un valor verdadero. Este método es tan ineficiente como podría ser, pero coincide con el enunciado del problema. Particularmente:

  • Elimina cada elemento individualmente, en lugar de todos a la vez.
  • Elimina elementos durante la iteración.
  • Opera en la matriz en sí, en lugar de una copia.

 function dropElements(arr, func) { while (arr.length > 0 && !func(arr[0])) { arr.shift(); } return arr; } let tester = dropElements([1, 2, 3, 4,5,6,3,2,1], function(n) {return n >= 3;}); console.log(tester);

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