我有一个类似于此的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的最后一项执行相同的功能。
我不确定如何做到这一点,我们将非常感谢任何帮助。
答案 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
}