Я получаю -1 из myarray.indexOf(element)
, даже если элемент находится в myarray.
Вот некоторые фрагменты кода:
function createChangeRecord( old_array, new_array ) {
var nds = new_array.slice(0,new_array.length);
var el, idx;
if (...) {
...
} else if ( old_array.length==new_array.length ) {
for ( var i=0; i<old_array.length; i++ ) {
el = old_array[i];
idx = nds.indexOf(el);
if ( idx!=(-1) ) {
...
} else {
var a = "el: " + el + "; nds: " + nds + "; nds.indexOf(el): " + nds.indexOf(el);
alert( a );
...
}
}
...
}
...
}
Предупреждение показывает мне, что nds действительно содержит el, но предупреждение должно срабатывать только при idx == - 1, что должно быть истинным только в том случае, если nds не содержит el.
Я знаю, что я не дал достаточно информации, чтобы определить конкретную проблему в моем случае, но, может быть, кто-то может рассказать мне некоторые общие причины, которые могут вызвать такое поведение?
Ответы на аналогичный вопрос, предложенный с использованием jQuery inArray() вместо indexOf, но я хочу знать, почему indexOf не работает. Другие предположили, что indexOf предназначен для строк, а не массивов, но это неверно из онлайн-документов, которые я могу найти.