Иногда сравнение двух строк в массивах не удается.Отказ происходит иногда только в цикле if
с.Приведенный ниже пример кода предназначен для реализации проблемы.
searchTable.sort();
for(n=1;n<searchTable.length;n++){
// alert(searchTable[n-1]!=searchTable[n]);
if(searchTable[n-1]!=searchTable[n]){
idx++;
memTable[idx]=searchTable[n];
}
}
Значения в searchTable
точно равны strings
, и все значения также не одинаковы.устанавливаются в memTable [idx], несмотря на аналогичные значения в [n-1]
и [n]
.Активированный alert()
показывает правильный результат сравнения, но if
проходит через все.Похоже, что сравнение в if
выполняется по ссылке, а не по значению.Как это возможно?Это ошибка в интерпретаторе JavaScript или что?
Действие можно исправить, добавив valueOf()
-методы к обоим элементам в выражении сравнения.Я разбил этот неудачник, только зацикленный if
с.Иногда требуется много времени, чтобы понять, почему код не работает.