JavaScript - 在数组末尾执行函数

时间:2014-01-16 17:00:14

标签: javascript arrays for-loop

我有一个类似于此的Node.js程序:

var foo = [val,val,val....]
var bar = []

for(i=0;i<foo.length;i++){
  bar.push(foo[i])
  if(bar.length % 29 == 0){

    //do something with items 1-29 of bar

  bar.length = 0;
  }
}

foo数组超过1,000个项目,我必须对foo数组中每组29个项目执行一个函数。我正在使用该栏成功获取每29个对象,并在完成后将其重置为零。 但是 - 我想对foo数组中小于29的最后一项执行相同的功能。

我不确定如何做到这一点,我们将非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

var foo = [1, 2, 3, ...]
for(i = 0; i < foo.length; i += 29) {
    var bar = foo.slice(i, i+29);
    // do something bar
}

答案 1 :(得分:0)

var foo = [val,val,val....]
var bar = []

for(i=0;i<foo.length;i++){
    bar.push(foo[i])
    if(bar.length % 29 == 0 || i == foo.length - 1){

        //do something with items 1-29 of bar

        bar.length = 0;
    }
}

添加i == foo.length - 1部分将导致为最后一组项目执行附带的代码,即使它们中没有29个也是如此。因此,如果foo.length == 28,它将在到达第28项时执行。如果foo.length == 40,它将在第29项和第40项上执行。

答案 2 :(得分:0)

这适用于foo

中的每29项
var foo = [1,2,3....];
var bar = [];
for(i=0;i<foo.length;i++){  
  bar.push(foo[i]);           
  if(bar.length >= 29)  {
    // do something with bar
    bar = [];
  }  
}
if(bar.length>0) {
    // do something with remaining bar
}

但是,您可以创建大小为N的分区并执行相同的工作,但要优雅; - )

var bar,size = 29;
for (var i=0,j=foo.length; i<j; i+=size) {
    bar= foo.slice(i,i+size);
    // do something with bar
}