我有一个数组(从API获取)有近300个值,但我需要用10个值的集合调用someAction()
。我的意思是,1-10,11-20,21-30 ......等等。我把它限制在10,但其他290个值都丢失了。
它是一个多维数组。
var n = 10; // Limit of names
for (var i = 0; i < n; i++) {
namestr += names[i].first + "(" + names[i].nick + ")";
if(i != (n-1)){namestr += ", ";}
}
someAction(namest, function(){...});
感谢您的帮助
答案 0 :(得分:7)
如果你只想在每10个元素上调用someAction,你可以这样做:
for (var i = 0; i < names.length; i+=10) {
someAction(names.slice(i, i+10));
}
根据您的评论,您可以这样做:
for (var i = 0; i < names.length; i+=10) {
var tmp = names.slice(i, i+10);
for (var j = 0; j < tmp.length, j++) {
tmp[j] = tmp[j].first + " (" + tmp[j].nick + ")";
}
someAction(tmp.join(","));
}
答案 1 :(得分:1)
您可以使用Array.slice从大型数组中剪切10个元素块并使用它调用您的函数:
for (var i = 0; i < names.length; i += 10) {
var elements = names.slice(i, i+10);
// handle this set
handleTenItems(elements);
}
或者,如果您只需要处理10组中的元素:
for (var base = 0; base < names.length; base += 10) {
for (var i = 0; i < n; i++) {
namestr += names[base + i].first + "(" + names[base + i].nick + ")";
if(i != (n-1)){namestr += ", ";}
}
someAction(namest, function(){...});
}
旁注:我在这里看不到多维数组......
答案 2 :(得分:0)
您可以向字符串中添加项目,并为每10个项目调用该方法,然后使用剩余部分调用它:
for (var i = 0, namestr = ''; i < names.length; i++) {
namestr += (namestr.length ? ", " : "") + names[i].first + "(" + names[i].nick + ")";
if (i % 10 == 9) {
someAction(namestr, function(){...});
namestr = '';
}
}
if (namestr.length) {
someAction(namestr, function(){...});
}