【发布时间】:2014-05-03 17:08:40
【问题描述】:
我正在用 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
}
}
}
}
感谢您的帮助。
【问题讨论】:
-
那么,
points是什么?它是“实时”集合还是静态集合?如果在迭代时从集合中删除项目是一个问题,您始终可以将要删除的项目存储在toDelete集合中,然后遍历该集合以在以后删除它们。 -
很有可能这是一个 O(n^3) 算法,因为各种删除函数的时间可能很糟糕。我说“可能”是因为 JS 数组的内部表示在规范中并不清楚。
标签: javascript arrays loops splice