LoginSignup
2
5

More than 5 years have passed since last update.

JavaScriptで二つの配列の差分を取得する

Posted at

はじめに

JavaScriptで配列の差分を処理する方法を考察します。
なお、本記事では以下の記事を大変参考にさせていただきました。
JavaScriptで2つの配列の差分を抽出する - Qiita
js 二つの配列の差分を求める - Qiita

差分の処理を関数で渡してしまう

JavaScriptだと関数の引数に関数が渡せるので、差分の要素の処理を引数に関数として渡せたら面白いかなと思いまして以下のコードを考えました。

const a = [1, 2, 3, 4];
const b = [3, 4, 5, 6];

// xにあってyにないものに対してopeに渡した関数の処理をする関数
function getDiff(x, y, ope){
    x.forEach(item =>{
        if(!y.includes(item)){
            ope(item);
        }
    })
}

// aにあってbにないものを表示する
getDiff(a, b, item => console.log('a include and b do not inclode :' +item));

// bにあってaにないものを表示する
getDiff(b, a, item => console.log('b include and a do not inclode :' +item));

結果

a include and b do not inclode :1
a include and b do not inclode :2
b include and a do not inclode :5
b include and a do not inclode :6

getDiffでは、配列x,yを受け取り、xにあってyにない要素に対してopeで渡された処理を行います。
opeはただconsole.logで結果を表示してるだけですが、関数自体を渡してしまえるので色々と使いわませます。
例えば差分だけのリストを作ることも出来ます。

// 差分だけのリストを作る
let diffArray = new Array();
getDiff(a, b, item => diffArray.push(item));
getDiff(b, a, item => diffArray.push(item));

console.log(diffArray);

結果

(4) [1, 2, 5, 6]
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5