【初心者向け】JavaScriptで2つの配列の差分を簡単に取得する方法
JavaScriptで2つの配列の差分を取得する方法
filterメソッドとincludesメソッドを使う
この方法は、2つの配列をループ処理し、それぞれの要素を比較して差分を取得する方法です。
function getDifference(arr1, arr2) {
const difference = arr1.filter(element => !arr2.includes(element));
return difference;
}
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = getDifference(arr1, arr2);
console.log(difference); // [1, 4]
この方法のメリットは、比較的シンプルで分かりやすいことです。
デメリットとしては、配列が大きい場合、処理速度が遅くなる可能性があります。
Setオブジェクトを使う
この方法は、Set
オブジェクトを使って、2つの配列の差分を取得する方法です。
function getDifference(arr1, arr2) {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const difference = [...set1].filter(element => !set2.has(element));
return difference;
}
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = getDifference(arr1, arr2);
console.log(difference); // [1, 4]
この方法のメリットは、Set
オブジェクトの高速な検索機能を利用するため、配列が大きい場合でも処理速度が速いことです。
デメリットとしては、Set
オブジェクトは重複を許容しないため、重複する要素が存在する場合、処理結果が意図と異なる可能性があります。
Lodashライブラリには、difference
という関数があり、2つの配列の差分を簡単に取得することができます。
const _ = require('lodash');
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = _.difference(arr1, arr2);
console.log(difference); // [1, 4]
この方法のメリットは、Lodashライブラリの豊富な機能を利用することで、複雑な処理を簡単に記述できることです。
デメリットとしては、Lodashライブラリを別途インストールする必要があることです。
JavaScriptで2つの配列の差分を取得するには、いくつかの方法があります。それぞれの方法にはメリットとデメリットがあるので、状況に応じて使い分けることが重要です。
filterメソッドとincludesメソッドを使う
function getDifference(arr1, arr2) {
const difference = arr1.filter(element => !arr2.includes(element));
return difference;
}
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = getDifference(arr1, arr2);
console.log(difference); // [1, 4]
Setオブジェクトを使う
function getDifference(arr1, arr2) {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const difference = [...set1].filter(element => !set2.has(element));
return difference;
}
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = getDifference(arr1, arr2);
console.log(difference); // [1, 4]
Lodashライブラリを使う
const _ = require('lodash');
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = _.difference(arr1, arr2);
console.log(difference); // [1, 4]
reduceメソッドを使う
function getDifference(arr1, arr2) {
return arr1.reduce((acc, element) => {
if (!arr2.includes(element)) {
acc.push(element);
}
return acc;
}, []);
}
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 3, 5];
const difference = getDifference(arr1, arr2);
console.log(difference); // [1, 4]
外部ライブラリを使う
Lodashライブラリ以外にも、underscore.js
やRamda
などのライブラリには、2つの配列の差分を取得する関数があります。
javascript arrays array-difference