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

دالة Sort

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

تتيح لك الدالة sort() فرز عناصر الـ array في مكانها وتُرجع الـ array المفرزة. بشكل افتراضي، تقوم بفرز العناصر كنصوص بترتيب أبتثي وascending.

إليك بناء الجملة الأساسي:

array.sort([compareFunction])

مثال دون استخدام compare function:

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] (ترتيب رقمي غير صحيح)

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

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

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

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

// ترتيب تصاعدي
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 تأخذ مصفوفة من السلاسل النصية وترجع مصفوفة جديدة تحتوي على نفس السلاسل النصية مرتبة حسب طولها بترتيب تصاعدي (ascending). إذا كان لسلسلتين نصيتين نفس الطول، فيجب ترتيبهما أبتدائياً (alphabetically).

جرّب بنفسك

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

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

جميع دروس Logic & Flow

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