断开D3每个循环没有标志

时间:2015-09-14 14:10:49

标签: javascript d3.js each

请考虑以下代码:

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

如何打破循环?是否有一种自然的D3方式来突破每个循环?我的意思是没有国旗如下:

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

我尝试在if语句中返回false但是它没有用(认为这可能和jquery.each一样,但我错了):

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

2 个答案:

答案 0 :(得分:5)

不,没有。请查看每个源代码https://github.com/mbostock/d3/blob/78e0a4bb81a6565bf61e3ef1b898ef8377478766/src/selection/each.js

你可能会抛出一个异常来打破循环,但除非你的情况真的是“例外”,否则使用异常可能会让你感到困惑而不是有用。

答案 1 :(得分:1)

您可以执行以下操作

var flag = false;
circle.some(function (d) {
    if (flag) return true;
});