Как сравнить два массива в javascript
5 лет назад
Человек-Молекула
Ответы
Для того чтобы просто сравнить массивы по значениям:
или:
3 года назад
Иван Иващенко
Прямое сравнение массивов всегда будет давать результат false. Поскольку массив, как объект, указывает на ссылку памяти, где хранится "значение". И эти ссылки всегда будут разными, за исключением случая когда мы сравниваем один и тот же объект (массив).
В последнем случае мы сравниваем один и тот же массив и получаем true, т.к. в b скопировалась ссылку на этот массив, а не значение.
4 года назад
Aleksey
Для того чтобы сравнить два массива и получить результат - например список уникальных значений, можно воспользоваться вложенными циклами:
4 года назад
Вячеслав Межуревский
3 года назад
Денис
=== и == сравнивают массивы по ссылке. Содержимое они не проверяют:
Это два разных объекта в памяти. Содержимое сравнивают поэлементно.
Одинаковые ли массивы
Функция учитывает порядок и подходит для массивов чисел и строк.
Через JSON.stringify
Короче, но с оговорками: undefined и null превратятся в одно и то же null, а у объектов важен порядок ключей. a.toString() === b.toString() ещё хуже: [1, 2] и ['1,2'] дадут одинаковую строку.
Без учёта порядка
[...a] делает копию: sort() меняет исходный массив.
Массивы объектов
every с === сравнит объекты по ссылке. Для вложенных структур используют готовые функции: isEqual из lodash или assert.deepStrictEqual в тестах Node.js:
Чем отличаются массивы
Есть в первом, нет во втором:
Общие элементы:
На больших массивах переведите второй массив в Set и проверяйте set.has(x): includes каждый раз проходит массив целиком.
Массивы и их методы разбирают в бесплатном курсе «Основы JavaScript».
2 дня назад
Никита Вихров






