我有一个包含 100
元素的数组,我想从第 10 位到第 15 位取一个元素 (10, 11, 12, 13, 14, 15)
,比从 20 日到 25 日,从 30 日到 35 日,从 40 日到 45 日,从 50 日到 55 日,所以我总是有一个 gap= 4
并存储到一个新的二维值。我找到了如何存储到 2D 数组,但我如何才能弥补这一差距?
这就是我如何制作大小为 6 的 block (因为我总是需要“十年”的前六个元素)
var newArr = [];
while(arr.length) newArr.push(arr.splice(0,6));
或
function splitArray(array, part) {
var tmp = [];
for(var i = 0; i < array.length; i += part) {
tmp.push(array.slice(i, i + part));
}
return tmp;
}
console.log(splitArray(m1, 6));
但首先我必须创建一个新的元素数组(10-15、20-25 等等...)。我怎么能这样做?
最佳答案
您的函数需要一个单独的参数来表示每个部分的步幅和大小。它在递增 for
循环变量时使用步幅,在获取切片时使用大小。
function splitArray(array, stride, size) {
var tmp = [];
for(var i = 0; i < array.length; i += stride) {
tmp.push(array.slice(i, i + size));
}
return tmp;
}
var m1 = [];
for (var i = 0; i < 100; i++) {
m1.push(i);
}
console.log(splitArray(m1, 10, 6));
关于具有特定步骤的Javascript for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44710083/