Quiero crear con la transformación de matriz antigua.
arr1 = [ 4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323 ]quiero crear como
newArr = [[4,5,6,7,8,9,10 ..., 24,25], [26,27,28 ..., 39], [40,...,52], ...] Como puede ver en arr1 , el número es el comienzo y el next item - 1 es el último número. Como puedo hacer asi. El último número es 325 en arr1 chunk_array , pero no funciona.
Puede usar map y Array.from y luego obtener todo excepto el último con slice(0, -1) .
const arr = [4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323] const result = arr.map((e, i) => Array.from(Array((arr[i + 1] || e) - e), (_, j) => e + j)).slice(0, -1) console.log(result)1) Puede usar map y Array.from para lograr el resultado deseado
const arr1 = [ 4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323, ]; const result = arr1.map((el, i, src) => { const start = el, end = src[i + 1]; return Array.from({ length: end - start }, (_, i) => i + start); }); result.pop(); console.log(result);2) También puedes hacer como
const arr1 = [ 4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323, ]; const result = arr1.map((el, i, src) => { const start = el, end = src[i + 1] ?? start; return Array(end - start) .fill(0) .map((_, i) => i + start); }); result.pop(); console.log(result);3) También puedes usar reducir aquí:
const arr1 = [ 4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323, ]; const result = arr1.reduce((acc, start, i, src) => { const temp = Array((src[i + 1] ?? start) - start) .fill(0) .map((_, i) => i + start); if (temp.length) acc.push(temp); return acc; }, []); console.log(result); const data = [ 4, 26, 40, 53, 58, 68, 73, 86, 91, 114, 119, 132, 137, 147, 152, 165, 170, 183, 188, 201, 206, 208, 215, 220, 233, 238, 250, 255, 267, 272, 284, 289, 301, 306, 318, 323 ] const result = data.map((n, index, array) => Array.from({ length: ( array[index+1] || n+1 ) - n }, (_, i) => i+n)); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0 }