2014-05-30 6 views
0

Я пытаюсь заставить оператора сравнения работать без успеха. Оператор сравнивает два массива для обеспечения их идентичности.функция не выполняется при сравнении двух массивов

if (($(array_1).not($(array_2)).length === 0 && $(array_2).not($(array_1)).length === 0)) { 
    alert("all matches dropped"); 
    } 

Этот код работает, конечно, вместо «истины» вместо сравнения.

if (true) { 
    alert("all matches dropped"); 
    } 

Странная часть является то, что сравнение возвращает «истинные» при вводе в консоль:

console.log($(array_1).not($(array_2)).length === 0 && $(array_2).not($(array_1)).length === 0) 
----> true 

Любые идеи, что может быть не так? Благодарю.

+0

Что находится внутри 'array_1' и' array_2'? –

+0

_ «Странная часть заключается в том, что сравнение возвращает« true »при вводе в консоль« _ », и если вы не вводите его в консоль, но делаете тот же вывод отладки непосредственно перед оператором' if' в вашем коде ... ? – CBroe

+0

Вы сравниваете длину массива со значением 0, которое является ложным. Итак, в вашем случае длина массива if не найдена равна 0, поэтому false = false возвращает true. –

ответ

1

Оно должно быть:

if($(array_1).not(array_2).length === 0 && $(array_2).not(array_1).length === 0) 

Вместо:

if (($(array_1).not($(array_2)).length === 0 && $(array_2).not($(array_1)).length === 0)) 

Здесь $(array_1).not(array_2).length и ($(array_1).not($(array_2)).length оба не одно и то же.

Смежные вопросы