移除嵌套循环中的元素

Remove element in nested loop

本文关键字:元素 嵌套循环      更新时间:2023-09-26

我正在用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
            }
        }
    }
}

首先,在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);
        }
    }
}