Различные способы найти разницу двух массивов в JavaScript

Нахождение разницы между двумя массивами — обычная задача в программировании на JavaScript. В этой статье блога мы рассмотрим различные методы выполнения этой задачи, а также примеры кода. К концу этой статьи вы будете хорошо понимать различные подходы, которые можно использовать для поиска разницы между двумя массивами в JavaScript.

Метод 1: использование метода filter()

function arrayDifference(arr1, arr2) {
  return arr1.filter(element => !arr2.includes(element));
}
// Example usage
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];
console.log(arrayDifference(array1, array2)); // Output: [1, 2]

Метод 2: использование объекта Set

function arrayDifference(arr1, arr2) {
  const set1 = new Set(arr1);
  const set2 = new Set(arr2);
  return [...arr1.filter(element => !set2.has(element)), ...arr2.filter(element => !set1.has(element))];
}
// Example usage
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];
console.log(arrayDifference(array1, array2)); // Output: [1, 2, 6, 7]

Метод 3: использование метода уменьшения()

function arrayDifference(arr1, arr2) {
  return arr1.reduce((result, element) => {
    if (!arr2.includes(element)) {
      result.push(element);
    }
    return result;
  }, []);
}
// Example usage
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];
console.log(arrayDifference(array1, array2)); // Output: [1, 2]

Метод 4. Использование библиотеки lodash

const _ = require('lodash');
function arrayDifference(arr1, arr2) {
  return _.difference(arr1, arr2);
}
// Example usage
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];
console.log(arrayDifference(array1, array2)); // Output: [1, 2]

Метод 5. Использование цикла for

function arrayDifference(arr1, arr2) {
  const result = [];
  for (let i = 0; i < arr1.length; i++) {
    if (!arr2.includes(arr1[i])) {
      result.push(arr1[i]);
    }
  }
  return result;
}
// Example usage
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];
console.log(arrayDifference(array1, array2)); // Output: [1, 2]