Я пишу простую реализацию метабаллов в 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', а затем перебрать их, чтобы удалить их позже. –
Документация по сращиванию: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice#Examples –
Существует хороший шанс, что это алгоритм O (n^3), поскольку время различных функций удаления может быть плохим. Я говорю «может быть», потому что внутреннее представление массивов JS не ясно в спецификации. –