如何在Javascript中创建带有起始和限制数字的新数组



我想通过转换旧数组来创建。

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 ]

我想像一样创建

newArr = [[4,5,6,7,8,9,10 ..., 24,25], [26,27,28 ..., 39], [40,...,52], ...]

正如您在arr1中看到的,数字是开始,而next item - 1是最后一个数字。我怎么能这样。最后一个数字是arr1中的325我试过chunk_array,但它不起作用。

您可以使用mapArray.from,然后使用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)您可以使用map和Array.from来实现所需的结果

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)您也可以作为

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)您也可以在此处使用reduce:

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 }

相关内容

最新更新