数学 - 差集合
CoddyのJavaScriptジャーニー「論理とフロー」セクションの一部 — レッスン 38/65。
2つの集合AとBの差(多くの場合 A - B と書き表されます)は、Aに含まれているがBには含まれていない要素を含む新しい集合です。この演算は交換法則が成り立ちません。つまり、A - B は必ずしも B - A と同じであるとは限りません。
例えば:
const setA = new Set([1, 2, 3, 4, 5]);
const setB = new Set([3, 4, 5, 6, 7]);
// A - B: Aに含まれるがBには含まれない要素
const differenceAB = new Set([...setA].filter(x => !setB.has(x)));
console.log('A - B:', differenceAB); // Set { 1, 2 }
// B - A: Bに含まれるがAには含まれない要素
const differenceBA = new Set([...setB].filter(x => !setA.has(x)));
console.log('B - A:', differenceBA); // Set { 6, 7 }チャレンジ
簡単2つの配列 arr1 と arr2 を引数として受け取る setDifference という名前の関数を作成してください。この関数は、配列をセットに変換する必要があります。set1 には存在するが set2 には存在しない要素を含む新しい Set を作成し、それを配列に変換して返してください。
チートシート
2つの集合AとBの差(A - B)は、Aに含まれるがBには含まれない要素を含む新しい集合を作成します。この操作は交換法則が成り立ちません(A - B ≠ B - A)。
集合の差を求めるには、配列をSetに変換し、Setの操作を使用して最初の集合には含まれるが2番目の集合には含まれない要素を見つけます。例えば:
const setA = new Set([1, 2, 3, 4, 5]);
const setB = new Set([3, 4, 5, 6, 7]);
// A - B: Aに含まれるがBには含まれない要素
const differenceAB = new Set([...setA].filter(x => !setB.has(x)));
console.log('A - B:', differenceAB); // Set { 1, 2 }
// B - A: Bに含まれるがAには含まれない要素
const differenceBA = new Set([...setB].filter(x => !setA.has(x)));
console.log('B - A:', differenceBA); // Set { 6, 7 }自分で試してみよう
function setDifference(arr1, arr2) {
const set1 = new Set(arr1)
const set2 = new Set(arr2)
const differenceSet = new Set();
// ここにコードを記述してください
return Array.from(differenceSet);
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。