/
Вопросы и ответы
/
JavaScript
/

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

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

4 года назад

Человек-Молекула

Ответы

9

Для того чтобы просто сравнить массивы по значениям:

function isArraysEqual(firstArray, secondArray) { return firstArray.toString() === secondArray.toString(); }

или:

const areArraysEqual = (firstArray, secondArray) => { if ( firstArray.length === secondArray.length && firstArray.every((element, index) => element === secondArray[index]) ) { return true; } return false; };```

2 года назад

Иван Иващенко

6

Прямое сравнение массивов всегда будет давать результат false. Поскольку массив, как объект, указывает на ссылку памяти, где хранится "значение". И эти ссылки всегда будут разными, за исключением случая когда мы сравниваем один и тот же объект (массив).

[1, 2, 3] === [1, 2, 3]; // false
[1, 2, 3] > [1, 2, 3]; // false
[1, 2, 3] < [1, 2, 3]; // false
const a = [10, 11];
const b = a;
console.log(a === b); // true

В последнем случае мы сравниваем один и тот же массив и получаем true, т.к. в b скопировалась ссылку на этот массив, а не значение.

2 года назад

Aleksey

3

Для того чтобы сравнить два массива и получить результат - например список уникальных значений, можно воспользоваться вложенными циклами:

const arr1 = [1,2,3,6,5];
const arr2 = [1,6,7,8];
const result = [];

for (let i = 0; i < arr1.length; i++) {
  for (let j = 0; j < arr2.length; j++) {
    if (arr1[i] === arr2[j]) {
      result.push(arr1[i])
    }
  }
}

3 года назад

Вячеслав Межуревский

1
function isEqual(array1, array2) { return JSON.stringify(array1) === JSON.stringify(array2); }

2 года назад

Денис