3

我在一个forEach子句中获取一些值

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

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

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

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

4

5 回答 5

2

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

data.slice(0, 5).forEach(function (content){
  // ...
});
于 2012-06-29T04:32:48.173 回答
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)
}
于 2012-06-29T04:33:06.893 回答
1

如果您使用ECMAforEach,回调接收三个参数,第二个是索引。

data.forEach(function(content, index) {
   if (index >= 5) return;
  // ...
});
于 2012-06-29T04:33:15.510 回答
1

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

data.forEach(function(content, index){
   if (index < 5) {
       controller.setAttribute(value from data);
   }
});
于 2012-06-29T04:33:22.880 回答
0

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

for(var i=0; i<5; i++){
    controller.setAttribute(data[i]);
}
于 2012-06-29T04:33:00.577 回答