دالة 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));التحدي
سهلأنشئ دالة باسم sortByLength تأخذ مصفوفة من السلاسل النصية وترجع مصفوفة جديدة تحتوي على نفس السلاسل النصية مرتبة حسب طولها بترتيب تصاعدي (ascending). إذا كان لسلسلتين نصيتين نفس الطول، فيجب ترتيبهما أبتدائياً (alphabetically).
جرّب بنفسك
function sortByLength(arr) {
return arr.sort((a, b) => {
// اكتب الكود هنا
})
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1السلاسل النصية بعمق
أساسيات السلاسل النصيةالتكرار عبر السلاسل النصيةTemplate Literalsدوال السلاسل النصيةمراجعة - String Weaver2المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات5المجموعات - الجزء الأول
ما هي المجموعة؟التكرار عبر المجموعاتإضافة عنصرإزالة عنصرالتحقق من وجود عنصرالحجم وهل هي فارغةالنسخ والمسحملخص - أساسيات المجموعات8مواضيع شيقة حول الـ Arrays
تفكيك الـ Arrayاستخدام الـ Spread Syntax في الـ Arraysالـ Sparse Arraysمراجعة - ورشة عمل الـ Arrays3JSON الجزء الأول
ما هو JSON؟التحقق من وجود المفتاحObject MethodsSpread Operator الجزء الأولSpread Operator الجزء الثانيحذف المفاتيحمراجعة - معالجة مفاتيح JSONتدرّب بنفسك: مترجم JavaScript عبر الإنترنت