У меня нет никаких сомнений, что мой собственный идиотизм ответственен за это. Я не программист, но ученый, и я просто взломаю что-нибудь, пока это не сработает, и я получаю такие странные ошибки. В принципе, любая помощь будет очень признательна.
Хорошо, моя функция такова:
function discardDuplicates(threshold) {
for (var m = 0; m < xCo2.length; m++){
var testX = xCo2[m];
var testY = yCo2[m];
for (var n = 0; n < xCo2.length; n++){
if (m != n) {
if ((Math.abs(xCo2[n] - testX) < threshold)
&& (Math.abs(yCo2[n] - testY) < threshold)
&& deltas[m] > deltas[n]){
xCo2.splice(n,1);
yCo2.splice(n,1);
deltas.splice(n,1);
}
}
}
}
}
Я обнаруживаю объекты с координатами (x, y), хранящимися в массивах xCo2 и yCo2, каждая координата также имеет свойство, известное как «дельта». И я хочу проверить, идентифицировал ли я несколько функций в основном в одном и том же месте - если они есть, они, вероятно, дубликаты, поэтому я удаляю из списка все, кроме одной с самой высокой дельтой.
Да, в принципе, это не работает!
На данный момент я должен сделать это:
//ugly hack
var oldLength = 0;
var newLength = 1;
while (oldLength != newLength) {
oldLength = xCo2.length;
discardDuplicates(10);
newLength = xCo2.length;
}
Потому что при первом вызове функции она не удаляет дубликаты. Во второй раз он удаляет большинство из них. В третий раз у них обычно их все ... Так что я просто продолжаю звонить до тех пор, пока они не перестанут удалять дубликаты. Функция определенно работает, хотя; это удаляет правильные точки.
Причина, по которой я задаю этот вопрос, состоит в том, что та же самая ошибка теперь произошла во второй раз со второй функцией, которая на этот раз пытается удалить любые координаты с дельта-значением, которое является слишком низким.
Просветление будет с благодарностью принято!