带有特定步骤的Javascript for循环
Posted
技术标签:
【中文标题】带有特定步骤的Javascript for循环【英文标题】:Javascript for-loop with certain step 【发布时间】:2017-11-26 08:43:51 【问题描述】:我有一个包含100
元素的数组,我想从第 10 到第 15 (10, 11, 12, 13, 14, 15)
取一个元素,而不是从第 20 到第 25、从第 30 到第 35、从第 40 到第 45 以及从第 50 到第 55,所以我总是有一个gap= 4
并存储到一个新的二维值。我发现了如何存储到二维数组,但我怎么能做到这一点呢?
这就是我如何制作一个大小为 6 的块(因为我总是需要“十年”的前六个元素)
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 等等...)。我怎么能这样做?
【问题讨论】:
【参考方案1】:您的函数需要一个单独的参数来表示每个部分的步幅和大小。它在增加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));
【讨论】:
@AnnaF 如果回答了您的问题,请标记为答案【参考方案2】:generator function 消除了存储中间结果的需要。引入偏移量参数允许您跳过前五个值0, 1, 2, 3, 4, 5
:
function* splitArray(array, stride, size, offset = 0)
for (let i = offset; i < array.length; i += stride)
yield array.slice(i, i + size);
// Example:
const array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25];
console.log(...splitArray(array, 10, 6, 10));
除了这些特殊性之外,此实现与Barmar's answer 相同。
【讨论】:
以上是关于带有特定步骤的Javascript for循环的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript,JSON:如何在特定时间内运行 for 循环?
带有嵌套for循环的Javascript多维数组-无法正常工作
使用带有 JavaScript 模板文字函数的 for 循环
带有/ for循环按钮的Javascript jquery帮助