有没有办法打破 Ember 中的 forEach 迭代器?
我试图在回调(a la jQuery)中返回 false,但它不起作用。
谢谢!PJ
您可以使用Array#some
或Array#every
[1,2,3].some(function(element) {
return true; // Break the loop
});
[1,2,3].every(function(element) {
return false; // Break the loop
});
更多信息here
如果可用, Ember 使用本机Array.prototype.forEach
,如果不可用,则模拟它。请参阅https://github.com/emberjs/ember.js/blob/v1.0.0-rc.1/packages/ember-metal/lib/array.js#L45。
JavaScriptforEach
不支持中断。请参阅https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach
不,我不这么认为 cfr James,查看foreach代码,您可以看到它在引擎盖下使用了 for 循环。您可以抛出异常,但这就像编写意大利面条代码一样。但有可能,您可以在 github 上提出功能请求?或者编写您自己的实现来中断 for 循环。
使用toArray
可能会删除数组的顺序,这有点违背了目的。您可以使用普通的 for 循环,但使用objectAt
它来使其适合您。
var emberArray = [ ... Array of Ember objects ... ],
min = 3,
max = emberArray.get('length'),
targetObject;
for( var i = min; i < max; i++ ){
targetObject = emberArray.objectAt( i );
if( targetObject.get('breakHere') ) {
break;
}
}
这有一个额外的好处是允许您从某个索引开始,因此您可以循环遍历最少数量的项目。
使用Array#find并返回 true 以跳出循环。