删除嵌套循环中的元素

时间:2014-03-25 17:08:51

标签: javascript arrays loops splice

我在JS中编写一个简单的元球实现。我有一个元数组的数组,我每帧迭代遍历所有这些元素,并且每一个我都检查到每个其他元球的距离,如果它们足够接近,我需要合并它们。

这就是我猜它的样子,但我不知道如何从数组中正确删除元素而不破坏循环。

for(var i = 0; i < points.length; i++) {
    for(var j = 0; j < points.length ; j++) {
        if(i != j) {
            if(distance < 10) {
                //remove one of the points using splice
            }
        }
    }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,在i + 1开始你的内循环。您已经将元素与i进行了比较,因此无需重复,对吧?这也让你摆脱了if声明。

然后,当你拼接时,递减j以便不跳过下一个元素。

for(var i = 0; i < points.length; i++) {
    for(var j = i + 1; j < points.length ; j++) {
        if (distance(i, j) < 10) {
            points.splice(j--, 1);
        }
    }
}