Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сравнить два массива

Короткий ответ

Сравните длины, а затем каждый элемент на той же позиции:

const equal = (a, b) => a.length === b.length && a.every((value, index) => value === b[index]);
 
console.log(equal([1, 2, 3], [1, 2, 3]));
console.log(equal([1, 2, 3], [1, 2, 4]));

Результат:

true
false

Без учёта порядка

Отсортируйте копии обоих массивов и сравните их:

const sameItems = (a, b) => {
  const x = [...a].sort();
  const y = [...b].sort();
  return x.length === y.length && x.every((value, index) => value === y[index]);
};
 
console.log(sameItems(['b', 'a', 'c'], ['c', 'b', 'a']));

Результат:

true

Вложенные данные

Массивы простых объектов можно сравнить через их JSON-строки. Порядок ключей при этом должен совпадать:

const a = [{ id: 1 }, { id: 2 }];
const b = [{ id: 1 }, { id: 2 }];
 
console.log(JSON.stringify(a) === JSON.stringify(b));

Результат:

true

Частая ошибка

=== сравнивает массивы по ссылке: два разных массива никогда не равны, даже с одинаковым содержимым:

console.log([1, 2] === [1, 2]);

Результат:

false

Функции из этого ответа

  • Array.prototype.every — Проверяет, что все элементы массива подходят под условие.
  • JSON.stringify — Преобразует значение в строку в формате JSON.
  • Array.prototype.includes — Проверяет, есть ли значение в массиве.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.