Проблема с многомерными массивами JS, JQuery

В ходе работы с двумерными массивами столкнулся со следующей проблемой:

arr = [[0, 0], [1, 0], [1, 1], [1, 2]]
if (arr[1] == [1, 0]) {   // false
    alert('true');
}
else {
    alert('false');
}

Код выводит false. Подскажите, как сделать, чтобы проверка проходила правильно


Ответы (1 шт):

Автор решения: Yugofx

Вы проверяете ссылочные типы данных на равенство. Такого рода проверки хороши для примитивных типов: String, Number, null, undefined, Boolean.

Сравнивая массивы или объекты, надо сравнивать их полностью по значениям внутри них, обходя каждое значение по эквивалентному адресу. Если ваш двумерный массив представляет массив из массивов чисел, то корректной будет проверка на

arr[1].toString() === [1, 0].toString()

Этот способ крайне не универсальный и подойдет только для вашего случая

Если вы уверены, что ваши массивы JSON безопасны, можно провернуть такое

JSON.stringify(arr[1]) === JSON.stringify([1, 0])

В случае тяжелых объектов и массивов - это очень дорогая по времени исполнения операция.

→ Ссылка