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

280
Vistas
El método push () no funciona correctamente en JavaScript

Estoy tratando de escribir un programa bastante simple que divide una matriz en otra matriz de matrices más pequeñas de tamaño definido, sin embargo, el método push() no funciona. ¿Podría alguien por favor ayudarme con eso?

 function chunk(array, size) { var newArray = []; var tempArray = []; for (let i = 0; i < array.length / size; i++) { for (let j = size * i, k = 0; j < size * i + size; j++, k++) tempArray[k] = array[j]; newArray.push(tempArray); } return newArray; } var data = [1, 2, 3, 4, 5, 6, 7, 8]; console.log(chunk(data, 2));

La salida ideal debería ser [[1, 2],[3, 4], [5, 6], [7, 8]] . Sin embargo, obtengo [[7,8],[7,8],[7,8],[7,8]] .

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

0

Ya casi estás ahí. Simplemente mueva la definición de tempArray dentro de su primer for -loop. De lo contrario, estaría presionando la misma matriz cada vez.

Ejemplo de trabajo:

 function chunk(array, size) { const newArray = []; for (let i = 0; i < array.length / size; i++) { const tempArray = []; for (let j = size * i, k = 0; j < size * i + size; j++, k++) tempArray[k] = array[j]; newArray.push(tempArray); } return newArray; }; const data = [1, 2, 3, 4, 5, 6, 7, 8]; console.log(chunk(data, 2)); // [[1, 2],[3, 4], [5, 6], [7, 8]]

about 4 years ago · Juan Pablo Isaza Denunciar

0

La respuesta de @ Behemoth es la correcta para la pregunta . Pero si lo desea, también puede adoptar un enfoque ligeramente diferente como este para llegar a la solución.

 function chunk(array, size){ const newArray = []; let i,j; for (i = 0,j = array.length; i < j; i += size) { newArray.push(array.slice(i, i + size)); } return newArray; }; var data = [1, 2, 3, 4, 5, 6, 7 ,8]; console.log(chunk(data, 2));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Solución ligeramente diferente a @Behemoth y @Rukshan

 function chunk(array, size) { var newArray = []; var tempArray = []; for (let i = 0; i < array.length / size; i++) { for (let j = i; j < i + 1; j++) { for (let k = 0; k < size; k++) { if (array[size * j + k]) { tempArray.push(array[size * j + k]); } } newArray.push(tempArray); tempArray = []; } } return newArray; }; var data = [1, 2, 3, 4, 5, 6, 7, 8]; console.log(chunk(data, 2));

La solución sería [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9 ] ] en lugar de [ [ 1, 2 ], [ 3, 4 ], [ 5 , 6 ], [ 7, 8 ]]

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