Мне нужно сравнить два массива в JavaScript и получить простой результат - true если они одинаковые, false если разные. Обычное сравнение через == не работает как ожидается.
С помощью JSON.stringify получается сравнить массивы, но может есть более быстрый способ? Хочется избежать написания циклов для проверки каждого элемента по отдельности. Какие есть эффективные варианты для сравнения массивов?
А что насчет toString()? arr1.toString() === arr2.toString() - быстро работает с числами и строками. Правда глючит, если в массиве запятые или пустые элементы. Какие у тебя массивы - только примитивы или есть сложные структуры?
Я обычно делаю через every() - получается изящно. arr1.length === arr2.length && arr1.every((val, i) => val === arr2[i]). Быстро работает для простых массивов и читается нормально. Правда если внутри объекты или другие массивы - будет сложнее. Но для твоего примера с числами - самое то, циклы писать не надо.
JSON.stringify действительно не работает как нужно, если порядок элементов разный или есть вложенные объекты. Подходящий вариант - использовать _.isEqual() из библиотеки lodash, она отлично справляется с глубоким сравнением. Если не хотите зависеть от сторонних библиотек, то придётся написать рекурсивную функцию для сравнения массивов вручную.