Хотя это работает только для скалярных массивов (см. примечание ниже), оно короткое:
array1.length === array2.length && array1.every(function(value, index) { return value === array2[index]})
Rr, в ECMAScript 6 / CoffeeScript / TypeScript со стрелочными функциями:
array1.length === array2.length && array1.every((value, index) => value === array2[index])
(Примечание: здесь «скаляр» означает значения, которые можно напрямую сравнивать с помощью ===
. Итак: числа, строки, объекты по ссылке, функции по ссылке. Подробнее см. в ссылке MDN для получения дополнительной информации о операторах сравнения).
UPDATE
Из того, что я прочитал из комментариев, сортировка массива и сравнение могут дать точный результат:
array1.length === array2.length && array1.sort().every(function(value, index) { return value === array2.sort()[index]});
Например :
array1 = [2,3,1,4];
array2 = [1,2,3,4];
Тогда приведенный выше код даст true