2013-04-26 2 views
4

Можно ли вырваться из подчеркивания каждой петли ..?Вырыв из петли _.each

_.each(obj, function(v,i){ 
    if(i > 2){ 
    break // <~ does not work 
    } 
    // some code here 
    // ... 
}) 

Есть ли другой шаблон дизайна, который я могу использовать?

+1

Я не знаю Javascript, но не «возвратил бы» работу? – Pubby

+0

@Pubby Он вернется, и цикл продолжится, и он снова вернется. Я хочу сломать и остановить цикл. –

+3

Вместо этого вы можете попробовать метод Array.every. От: http://stackoverflow.com/questions/8779799/how-to-break-the-each-function-in-underscore-js – oooyaya

ответ

9

Я не думаю, что вы можете, поэтому вам просто нужно обернуть содержимое функции в i < 2 или использовать return. Возможно, имеет смысл использовать .some или .every.

EDIT:

//pseudo break 
_.each(obj, function (v, i) { 
    if (i <= 2) { 
     // some code here 
     // ... 
    } 
}); 

Проблема с вышеизложенным, конечно, что он должен делать весь цикл, но это просто слабость Подчеркивание-х each.

Вы можете использовать .every, хотя (или нативный метод массива или метод Underscore в):

_.every(obj, function (v, i) { 
    // some code here 
    // ... 
    return i <= 2; 
}); 
+0

Вы могли бы расширить этот ответ с помощью примера кода? –

+0

@BillyMoon Я обновил свой ответ, чтобы включить примеры –

+0

p.s. from underscore docs (не знаю, как недавно): «цикл [каждый] (http://underscorejs.org/#each) не может быть разбит - для разрыва используйте [_.find] (http: //underscorejs.org/#find) вместо этого " –

Смежные вопросы