Как правильно сравнивать массивы в JavaScript?

Мне нужно сравнить два массива в JavaScript и получить простой результат - true если они одинаковые, false если разные. Обычное сравнение через == не работает как ожидается.

let firstArray = [4, 5, 6];
let secondArray = [4, 5, 6];

console.log(firstArray == secondArray); // Выводит false
console.log(JSON.stringify(firstArray) == JSON.stringify(secondArray)); // Выводит true

С помощью JSON.stringify получается сравнить массивы, но может есть более быстрый способ? Хочется избежать написания циклов для проверки каждого элемента по отдельности. Какие есть эффективные варианты для сравнения массивов?

А что насчет toString()? arr1.toString() === arr2.toString() - быстро работает с числами и строками. Правда глючит, если в массиве запятые или пустые элементы. Какие у тебя массивы - только примитивы или есть сложные структуры?

Я обычно делаю через every() - получается изящно. arr1.length === arr2.length && arr1.every((val, i) => val === arr2[i]). Быстро работает для простых массивов и читается нормально. Правда если внутри объекты или другие массивы - будет сложнее. Но для твоего примера с числами - самое то, циклы писать не надо.

JSON.stringify действительно не работает как нужно, если порядок элементов разный или есть вложенные объекты. Подходящий вариант - использовать _.isEqual() из библиотеки lodash, она отлично справляется с глубоким сравнением. Если не хотите зависеть от сторонних библиотек, то придётся написать рекурсивную функцию для сравнения массивов вручную.