【问题标题】:javascript read first five valuesjavascript读取前五个值
【发布时间】:2012-06-30 15:33:41
【问题描述】:

我在 forEach 子句中获取一些值

 data.forEach(function(content){
  ...
  controller.setAttribute(value from data);
  ...}

这对我有用。但数据循环迭代近 20 次。我的控制器只能取 5 个值。因此,上面示例中的控制器采用last five 值。

如何在读取first five 值后限制我的数据退出。我需要有一些柜台,对吧?

或者有没有其他方法让控制器只读first five

【问题讨论】:

  • 使用计数器会更容易。

标签: javascript loops foreach


【解决方案1】:

你可以使用 JavaScript 的 Array#slice 方法:

data.slice(0, 5).forEach(function (content){
  // ...
});

【讨论】:

  • 我给了你一个 +1,但解决方案与你解释的略有不同。即它对我有用,因为我的结构不同。不过还是谢谢。
【解决方案2】:

如果我理解正确,这应该有效:

for (i=0; i<Math.min(data.length, 5); ++i) {
  controller.setAttribute(value from data[i])
}

但由于您似乎使用的是具有Array.forEach 的实现,因此:

data.slice(0,5).forEach(function(content) {
   controller.setAttribute(value from content)
}

【讨论】:

  • 答案很好,但我有一个更简单的解决方案。不过我给了你+1。谢谢。
【解决方案3】:

你可以在 value 参数之后传递一个 index 参数并使用它:

data.forEach(function(content, index){
   if (index < 5) {
       controller.setAttribute(value from data);
   }
});

【讨论】:

  • 我选择了您的答案,因为它更容易放置索引,而不是给出的其他答案。我做的和我们的略有不同。谢谢。
【解决方案4】:

如果你使用ECMA forEach,回调接收三个参数,第二个是索引。

data.forEach(function(content, index) {
   if (index >= 5) return;
  // ...
});

【讨论】:

  • 感谢您告诉我 ECMA。我给了你一个 +1。
【解决方案5】:

您可以为此使用计数器或 for 循环。示例:

for(var i=0; i<5; i++){
    controller.setAttribute(data[i]);
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多