158 подписчиков
Как сравнить два массива в JavaScript?
На первый взгляд это просто:
arrayA == arrayB
arrayA === arrayB
Но эти варианты не сработают. Если мы создаем массивы так:
const arrayA = [1, 2, 3];
const arrayB = arrayA;
Такие массивы всегда будут равны, так как ссылаются на один и тот же объект.
Другой вариант, если мы создадим два похожих массива:
const arrayA = [1, 2, 3];
const arrayB = [1, 2, 3];
В таком случае массивы всегда будут не равны, так как это разные объекты, хотя и выглядят одинаково.
Самый простой способ - использовать JSON.stringify() :
const arrayA = [1, 2, 3];
const arrayB = [1, 2, 3];
JSON.stringify(arrayA) == JSON.stringify(arrayB) // Выводит true
Данный способ может быть неэффективным, если нужно сравнить большие массивы, поскольку преобразует массивы в строку.
Более эффективным способом является перебор и сравнение элементов. Скриншот функции прилагается.
const arrayA = [1, 2, 3];
const arrayB = [1, 2, 3];
areArraysEqual(arrayA, arrayB) // Выводит true
Около минуты
18 мая 2024