Tengo una situación en la que obtengo los datos en una matriz y tengo que convertirlos en varias matrices... como Matrix.
const array = [1,2,3,4,5,6,7,8,9]la salida debe ser:
[[1,3],[2,4],[5,7],[6,8],[9]]esto es lo que tengo hasta ahora:
let i = 0; const add = []; while (i < list.length) { add.push([list[i], list[i + 2]]); i = i + 1; } return add;¿Quizás probar este?
let i = 0; const list = [1,2,3,4,5,6,7,8,9] const add = []; let newarr =[] while (i < list.length) { add.push([list[i], list[i + 2]]); add.push([list[i+1],list[i+3]]) i +=4; } //remove undefined item from the array newarr = add.map(arr=>arr.filter(item =>item != undefined)).filter(item=>item!="") console.log(newarr)const array = [1,2,3,4,5,6,7,8,9]; const visitedIndex = []; const newArray = []; array.forEach((element, i) => { if (!visitedIndex.includes(i)) { if (array[i+2]) { newArray.push([array[i], array[i+2]]) } else { newArray.push([array[i]]) } visitedIndex.push(i); visitedIndex.push(i+2); }; });Lodash trozo si no te importa.
O puede usar un enfoque recursivo en vanila js.
const array = [1,2,3,4,5,6,7,8,9]; const chunk = (arr, n) => arr.length ? [arr.slice(0, n), ...chunk(arr.slice(n), n)] : []; console.log(chunk(array, 2)); .as-console-wrapper{min-height: 100%!important; top: 0}