我在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
}
}
}
}
感谢您的帮助。
答案 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);
}
}
}