0

300近くの値を持つ配列(APIから取得)がありますがsomeAction()、10個の値のセットで呼び出す必要があります。つまり、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(){...});

ご協力いただきありがとうございます

4

3 に答える 3

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(","));
}
于 2013-01-30T19:37:17.170 に答える
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(){...});
}

補足:ここには多次元配列は表示されません...

于 2013-01-30T19:39:42.053 に答える
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(){...});
}
于 2013-01-30T19:39:49.713 に答える