重複する値を許さないコレクションSetで、python,rubyでは集合演算の機能が提供されていますが、jsではありません。 なので演算したい場合は自分で書かなければなりません
let s = new Set([1,2,3,4,5,6,7,8,9]); //積集合 var t = new Set([...s].filter(x=>((new Set([1,5,9])).has(x)))); console.log(t); //和集合 t.clear();//初期化 [...s,...(new Set([1,5,9]))].forEach(x=>t.add(x)); console.log(t); //差集合 t.clear(); [...s].filter(x=>(!(new Set([1,5,9])).has(x))).forEach(x=>t.add(x); console.log(t);
やり方として、Setは配列をコンストラクタの引数とするので、一度[…s]として、集合を配列に戻し、それぞれの演算を行います。
s1 = new Set([1,2,3]); s2 = new Set([2,3,4]); //積配列の作成 [...s1].filter(x=>s2.has(x)); //和配列の作成 [...s1,...s2]; //差配列の作成 [...s1].filter(x=>!s2.has(x));
出来た配列をコンストラクタに突っ込むか、全てをaddメソッドで突っ込むかで完成です。