Найти тему

Как сравниваются массивы JavaScript

В JavaScript числовые, строковые и логические значения сравниваются по значению. Делается это с помощью операторов равенства или идентичности. И если при сравнении двух таких переменных их значения равны или идентичны, то выражение, сравнивающее их, вернёт true. Например, две строки равны, если они содержат совершенно одинаковые символы, и не равны, если это не так:

Hello = "Привет";
HELLO = "ПРИВЕТ";
res = Hello == HELLO;

Здесь в переменной res будет false, потому что строки равны по смыслу, но не по значению (разный регистр символов).

С простыми типами данных всё понятно. Так выполняется сравнение и в большинстве других языков. А вот массивы, объекты и функции в JavaScript сравниваются не по значению, а по ссылке. Это значит, что две переменные считаются равными, только если они ссылаются на один и тот же объект.

То есть два разных массива никогда не будут равными, даже если они содержат одинаковые элементы. Однако разные переменные могут быть связаны с одним и тем же массивом (ссылаться на один массив). В этом случае сравнение этих переменных покажет равенство. Однако это потому, что сравниваются не значения переменных, а данные (объект), на которые ссылаются эти переменные. И если разные переменные ссылаются на один и тот же массив, то такое равенство будет истинным.

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

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.

Наука
7 млн интересуются