الدرس 6 من 8

فهرس بالمعرّف

هدف الدرس

ابنِ الفهرس مرّة، وابحث بخطوة

01

الشرح

لكل طلب معرّف مستخدم، وتريد اسمه. users.find(u => u.id === order.userId) داخل حلقة الطلبات يمرّ على قائمة المستخدمين مع كل طلب: أربعة آلاف طلب في أربعة آلاف مستخدم تعني ملايين المقارنات.

ابنِ فهرسًا مرّة واحدة — new Map(users.map(u => [u.id, u])) — فيصير كل بحث get خطوة واحدة مهما طالت القائمة. وسؤال «هل هو موجود؟» كذلك: includes داخل حلقة يصير Set وhas.

الفخّ: Map تقارن المفاتيح بنوعها: get('7') لا يجد المفتاح 7. والمعرّفات القادمة من dataset أو الرابط نصوص دائمًا، فحوّلها بـ Number قبل البحث.

02

المطلوب

أعد كتابة withNames(orders, users) بفهرس Map، وwithoutBlocked(orders, blockedIds) بـ Set — بالنتائج نفسها، وكل قائمة تُقرأ مرّة واحدة.

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

5 معايير
  1. withNames تضيف الاسم الصحيح
  2. المستخدم المفقود يأخذ «مجهول»
  3. كل مستخدم يُقرأ مرّة لا مع كل طلب
  4. withoutBlocked تستبعد المحظورين
  5. قائمة الحظر تُقرأ مرّة لا مع كل طلب
index.html
المعاينة
index.html100%
–/5

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

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