tienes un problema
Una matriz contenía muchos elementos y quería dividirla en varios fragmentos.
Se me ocurrieron dos soluciones completamente diferentes.
A) El primero fue dividir la matriz en partes iguales, por ejemplo, partes de 2 o 3 elementos. B) El segundo fue crear n partes y agregarle un conjunto variable de elementos iguales.
La forma y el motivo de la división son diferentes. La solución (A) es excelente cuando no sabes cuántos grupos obtendrás y no te importa, pero sabes que quieres X elementos en cada nueva matriz que crees.
La solución (B) es excelente cuando sabes cuántos grupos quieres crear y eres estricto al respecto, pero no te importa cuántos elementos contendrá cada nueva matriz.
En otras palabras, con una matriz como
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Con la solución (A) podemos crear fragmentos de 2 elementos y obtener
[ 1, 2 ][ 3, 4 ][ 5, 6 ][ 7, 8 ][ 9, 10 ]
los trozos de 3 elementos:
[ 1, 2, 3 ][ 4, 5, 6 ][ 7, 8, 9 ][ 10 ]
Con la solución (B) podemos dividir la matriz en 2 matrices y obtener:
[ 1, 2, 3, 4, 5 ][ 6, 7, 8, 9, 10 ]
O podemos dividir la matriz en 3 matrices y obtener:
[ 1, 2, 3, 4 ][ 4, 5, 6, 7][ 8, 9, 10 ]
Aquí está la implementación de (A):
const items = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] //… your array, filled with valuesconst n = 3 //tweak this to add more items per lineconst result = new Array(Math.ceil(items.length / n)) .fill() .map(_ = items.splice(0, n))
En este ejemplo result
hay una nueva matriz de matrices: Todo sobre videojuegos
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ] ]
Tenga en cuenta que la matriz original se modifica mediante el usosplice()
Aquí está la implementación de (B), asumiendo que desea una matriz de 3 matrices como resultado:
const items = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] //… your array, filled with valuesconst n = 3const result = [[], [], []] //we create it, then we'll fill itconst wordsPerLine = Math.ceil(items.length / 3)for (let line = 0; line n; line++) { for (let i = 0; i wordsPerLine; i++) { const value = items[i + line * wordsPerLine] if (!value) continue //avoid adding "undefined" values result[line].push(value) }}
En este ejemplo result
se muestra
[ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10 ] ]
Tips para principiantes de JavaScript
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- Cómo comprobar si un elemento DOM tiene una clase
Cómo dividir un array en varias partes iguales en JS
Se me ocurrieron dos soluciones completamente diferentes. Una matriz contenía muchos elementos y quería dividirla en varios fragmentos. Una matriz contenía
programar
es
https://aprendeprogramando.es/static/images/programar-como-dividir-un-array-en-varias-partes-iguales-en-js-2340-0.jpg
2024-11-06
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente