الدرس 7 من 8

الترتيب بمفتاحين

هدف الدرس

الدرجة أولًا ثم الاسم

01

الشرح

لوحة الصدارة ترتّب اللاعبين بالدرجة تنازليًّا، فإن تساوى لاعبان رتّبتهما بالاسم أبجديًّا، وهذا هو الترتيب بمفتاحين، فالمفتاح الثاني لا يُستعمل إلا حين يتساوى الأول.

ودالة المقارنة تُرجع رقمًا سالبًا إن كان الأول يسبق، وموجبًا إن كان الثاني يسبق، وصفرًا عند التساوي، فيكفيك سطر واحد: b.score - a.score || a.name.localeCompare(b.name, 'ar')، لأنّ || تعامل الصفر كأنه غير موجود، فلا تنتقل إلى المفتاح الثاني إلا عند التساوي.

انتبه: مقارنة الأسماء بـ < تقارن رموز الحروف لا ترتيبها في الأبجدية، فيسبق «أحمد» «إبراهيم» لأنّ رمز «أ» أصغر من رمز «إ»، مع أنّ الباء قبل الحاء، أما localeCompare فتعرف أنّ كليهما ألف فتقارن ما بعدها.

02

المطلوب

اكتب sortPlayers(players) لتُرجع مصفوفة جديدة مرتّبة بالدرجة تنازليًّا ثم بالاسم تصاعديًّا بـ localeCompare. وتذكّر أنّ sort تعدّل المصفوفة الأصلية، فانسخها قبل الترتيب أو استعمل toSorted.

الفحوص

5 فحوص
  1. الدرجة مرتّبة تنازليًّا كأرقام لا كنصوص
  2. عند التساوي يُرتَّب اللاعبان بالاسم
  3. الأسماء بالترتيب الأبجدي العربي لا بترتيب الرموز
  4. المصفوفة الأصلية لم تتغيّر
  5. اللوحة معروضة بالترتيب الصحيح
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/5

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

تجد 5 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.