2015-09-14 5 views
3

Рассмотрим следующий код:Перерыв D3 Каждый цикл без флага

circle.each(function (d) { 
    //...code 
}); 

Как я могу нарушить цикл? Есть ли естественный способ D3 вырваться из каждого цикла? Я имею в виду без флага следующим образом:

var flag = false; 
circle.each(function (d) { 
    if (flag) return; 
    if (someCondition) flag = true; 
    //...code 
}); 

Я попытался возвращение ложным внутри, если заявление, но это не сработало (подумал, что, возможно, это будет работать так же, как jquery.each, но я был неправ):

circle.each(function (d) { 
    if (someCondition) return false; //Not working 
    //...code 
}); 
+0

я отредактировал мой вопрос, чтобы избежать путаницы. Код не имеет значения. все работает, я просто хочу знать, как правильно сломать цикл, если это возможно. – taxicala

ответ

5

Нет, нет. Взгляните на каждый исходный код https://github.com/mbostock/d3/blob/78e0a4bb81a6565bf61e3ef1b898ef8377478766/src/selection/each.js.

Возможно, вы можете создать исключение, чтобы разбить цикл, но если ваш случай действительно «исключителен», использование исключения, вероятно, более запутанно, чем полезно.

1

вы можете сделать следующее

var flag = false; 
circle.some(function (d) { 
    if (flag) return true; 
}); 
Смежные вопросы