【问题标题】:Repeat action foreach 10 in array对数组中的每个 10 重复操作
【发布时间】:2013-01-14 18:00:24
【问题描述】:

我有一个包含近 300 个值的数组(取自 API),但我需要使用一组 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(){...});

感谢您的帮助

【问题讨论】:

  • Javascript 中没有多维数组。你的意思是它是一个对象数组?

标签: javascript arrays loops multidimensional-array


【解决方案1】:

如果您只想对每 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(","));
}

【讨论】:

  • 不是真的,我想要的是创建一个 namestr 字符串,其中包含数组中的 10 个值,然后通过 someAction 传递它;重复这个动作,直到我完成数组。
  • 你的意思是splice吗?
  • @AlexeiLevenkov - 错字。谢谢
【解决方案2】:

您可以使用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(){...});
}

旁注:我在这里看不到多维数组...

【讨论】:

    【解决方案3】:

    您可以将项目添加到字符串中,并为每 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(){...});
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 2012-05-25
      • 2015-07-26
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2016-03-11
      • 2021-07-19
      • 2012-12-14
      相关资源
      最近更新 更多