JavaScript で 2 つの配列の差を返す方法はありますか?
例えば:
var a1 = ['a', 'b'];
var a2 = ['a', 'b', 'c', 'd'];
// need ["c", "d"]
ベストアンサー1
Array.prototype.includes()
(ES2016/ES7) がここで役立ちます。
交差点
let intersection = arr1.filter(x => arr2.includes(x));
arr1
との両方に存在する値を生成しますarr2
。
[1,2,3]
そして[2,3]
降伏する[2,3]
[1,2,3]
そして[2,3,5]
また、[2,3]
違い
(Aのみの値)
let difference = arr1.filter(x => !arr2.includes(x));
だけに存在する値を生成しますarr1
。
[1,2,3]
そして[2,3]
降伏する[1]
[1,2,3]
そして[2,3,5]
また、[1]
対称差
let symDifference = arr1.filter(x => !arr2.includes(x))
.concat(arr2.filter(x => !arr1.includes(x)));
またはのみに含まれ、両方には含まれない値を生成します(「排他的論理和」)。arr1
arr2
両方の配列の差を互いに取り、2 つの結果を組み合わせると、次のようになります (arr1
に含まれないすべての要素を含む配列が得られarr2
、その逆も同様です)。
[1,2,3]
そして[2,3]
降伏する[1]
[1,2,3]
そして[2,3,5]
降伏する[1,5]
として@Joshaven Potterは回答で指摘したこれを直接 に割り当てることができるArray.prototype
ので、次のように配列で直接使用できます。
Array.prototype.diff = function(arr2) {
return this.filter(x => !arr2.includes(x));
}
[1, 2, 3].diff([2, 3]) // [1]