Menu
CoddyTech

طريقة Sort

جزء من قسم المنطق وتدفق التنفيذ في رحلة JavaScript على Coddy. الدرس 57 من 65.

تتيح لك الطريقة sort() فرز عناصر المصفوفة في مواضعها، وتُرجع المصفوفة بعد فرزها. افتراضيًا، تفرز العناصر كسلاسل نصية بترتيب أبجدي تصاعدي.

إليك الصياغة الأساسية:

array.sort([compareFunction])

مثال من دون استخدام دالة المقارنة:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

تحذير: لا تُرتَّب الأعداد كما هو متوقع من دون دالة مقارنة:

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (ترتيب عددي غير صحيح)

لفرز الأعداد بشكل صحيح أو تطبيق فرز مخصص، تحتاج إلى استخدام دالة مقارنة.

يجب أن تُرجع دالة المقارنة:

  • قيمة سالبة إذا كان ينبغي أن يأتي a قبل b
  • قيمة موجبة إذا كان ينبغي أن يأتي b قبل a
  • صفرًا إذا كانا متساويين

إليك كيفية ترتيب الأرقام باستخدام دالة مقارنة:

// ترتيب تصاعدي
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// ترتيب تنازلي
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

مثال آخر على كيفية ترتيب الكائنات:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// رتّب حسب العمر (تصاعديًا)
people.sort((a, b) => a.age - b.age);
// رتّب حسب الاسم (أبجديًا باستخدام localeCompare())
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

التحدي

سهل

أنشئ دالة باسم sortByLength تأخذ مصفوفة من السلاسل النصية وتُعيد مصفوفة جديدة تحتوي على السلاسل نفسها مرتبة حسب طولها ترتيبًا تصاعديًا. إذا كان طول سلسلتين متساويًا، فرتّبهما أبجديًا.

جرّب بنفسك

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // اكتب الكود هنا
    })
}
quiz iconاختبر نفسك

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت