Menu
Coddy logo textTech

数学 - 差集合

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 }
challenge icon

チャレンジ

簡単

2つの配列 arr1arr2 を引数として受け取る 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);
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン