Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المجموعات الجزئية والمجموعات الفائقة

جزء من قسم Logic & Flow في رحلة JavaScript على Coddy — الدرس 40 من 65.

تُعد المجموعة A مجموعة جزئية من المجموعة B إذا كان كل عنصر في A هو أيضاً عنصر في B. وبالمقابل، تُعد B مجموعة شاملة لـ A إذا كانت تحتوي على جميع عناصر A.

تكون المجموعتان متساويتين إذا كانتا تحتويان على نفس العناصر تماماً. على سبيل المثال، لنقم بإنشاء بعض الاختبارات:

const setA = new Set([1, 2, 3]);
const setB = new Set([1, 2, 3, 4, 5]);
const setC = new Set([1, 2, 3]);
const setD = new Set([6, 7, 8]);

دالة للتحقق مما إذا كانت setA هي مجموعة جزئية من setB:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

دالة للتحقق مما إذا كانت setA مجموعة شاملة لـ setB:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

دالة للتحقق مما إذا كانت مجموعتان متساويتين:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

اختبار علاقة المجموعة الجزئية:

// هل A مجموعة جزئية من B؟ 
isSubset(setA, setB) // صحيح
// هل B مجموعة جزئية من A؟ 
isSubset(setB, setA) // خطأ
// هل D مجموعة جزئية من B؟ 
isSubset(setD, setB) // خطأ

اختبار علاقة المجموعة الفوقية:

// هل B مجموعة شاملة لـ A؟
isSuperset(setB, setA) // true
// هل A مجموعة شاملة لـ B؟
isSuperset(setA, setB) // false

اختبار المساواة:

// هل A تساوي C؟
areEqual(setA, setC) // true
// هل A تساوي B؟
areEqual(setA, setB) // false
// هل A تساوي D؟
areEqual(setA, setD) // false
challenge icon

التحدي

سهل

أنشئ دالة تسمى analyzeSetRelations تأخذ مصفوفتين كمعاملات: arr1 و arr2. يجب أن تقوم الدالة بتحويل المصفوفات إلى مجموعات وإرجاع كائن بالخصائص التالية:

  • isSubset: قيمة منطقية تشير إلى ما إذا كانت set1 مجموعة جزئية من set2
  • isSuperset: قيمة منطقية تشير إلى ما إذا كانت set1 مجموعة شاملة لـ set2
  • isEqual: قيمة منطقية تشير إلى ما إذا كانت set1 و set2 تحتويان على نفس العناصر تماماً

ورقة مرجعية

تُعد المجموعة A مجموعة جزئية من المجموعة B إذا كان كل عنصر في A هو أيضاً عنصر في B. وعلى العكس من ذلك، تُعد B مجموعة شاملة لـ A إذا كانت تحتوي على جميع عناصر A. وتكون المجموعتان متساويتين إذا كانتا تحتويان على نفس العناصر تماماً.

التحقق مما إذا كانت setA مجموعة جزئية من setB:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

التحقق مما إذا كانت setA مجموعة شاملة لـ setB:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

التحقق مما إذا كانت المجموعتان متساويتين:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

جرّب بنفسك

function analyzeSetRelations(arr1, arr2) {
    let set1 = new Set(arr1);
    let set2 = new Set(arr2);

    // استخدم .every() و .has() للتحقق من علاقات المجموعات
    let isSubset = false;   // TODO: تحقق مما إذا كان كل عنصر في set1 موجوداً في set2
    let isSuperset = false; // TODO: تحقق مما إذا كان كل عنصر في set2 موجوداً في set1
    let isEqual = false;    // TODO: تحقق مما إذا كانت كلتا المجموعتين لهما نفس الحجم وأن isSubset صحيح

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow