الدرس 8 من 8

التقاطع والفرق

هدف الدرس

من n×m إلى n+m

01

الشرح

«من سجّل في المادّتين؟» و«من سجّل في الأولى وحدها؟» سؤالان يتكرّران بأشكال كثيرة: وسوم مشتركة، ومعرّفات حُذفت، وصلاحيات ناقصة.

الحلّ البديهي a.filter(x => b.includes(x)) يمرّ على b كاملة مع كل عنصر من a: ألف في ألف تعني مليون مقارنة. ابنِ من b مجموعة Set مرّة واحدة، ثم has لكل عنصر — ألفا خطوة بدل مليون.

الفخّ: بناء المجموعة داخل الدالة الممرَّرة: a.filter(x => new Set(b).has(x)) يبني مجموعة جديدة مع كل عنصر، فيصير أسوأ من includes نفسها.

02

المطلوب

اكتب intersect(a, b) تُرجع ما في المصفوفتين، وdifference(a, b) تُرجع ما في a وليس في b — كلتاهما بترتيب a، وتقرأ b مرّة واحدة.

معايير التصحيح

6 معايير
  1. intersect تُرجع المشترك
  2. وبترتيب المصفوفة الأولى
  3. difference تُرجع ما في الأولى وحدها
  4. المصفوفات الفارغة لا تكسرهما
  5. intersect تقرأ الثانية مرّة واحدة
  6. difference تقرأ الثانية مرّة واحدة
index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل» ليبدأ الفحص.

6 معايير في بطاقة «المطلوب».