الفرز المراعي للإعدادات المحلية
افرزوا السلاسل النصية بشكل صحيح باستخدام Intl.Collator.
الفرز المراعي للإعدادات المحلية درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
لماذا يفشل الترتيب الافتراضي
تقارن sort() الخاصة بالمصفوفات السلاسل النصية وفق وحدات ترميز UTF-16. ولذلك تضع الأحرف الكبيرة قبل الصغيرة، ولا تتعامل مع علامات التشكيل بشكل صحيح — وهذا غير مناسب للقوائم المقروءة بشريًا.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort()); // ["Apple","banana","cherry"] — capital winslocaleCompare
تقارن String.prototype.localeCompare سلسلتين نصيتين باستخدام قواعد locale، وتعيد قيمة سالبة أو صفرًا أو قيمة موجبة.
console.log("apple".localeCompare("banana")); // -1
console.log("banana".localeCompare("apple")); // 1الترتيب باستخدام localeCompare
مرّروها كمقارن للحصول على ترتيب ملائم للقراءة البشرية.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort((a, b) => a.localeCompare(b)));
// ["Apple", "banana", "cherry"] — case-insensitive orderingIntl.Collator
عند ترتيب عدد كبير من العناصر، يكون Intl.Collator أسرع: أنشئوه مرة واحدة وأعيدوا استخدام طريقته compare.
const collator = new Intl.Collator("en-US");
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort(collator.compare));علامات التشكيل واللهجات
يرتّب Collator الأحرف التي تحتوي على علامات تشكيل بشكل صحيح وفق locale، بخلاف المقارنة بوحدات الترميز.
const words = ["zebra", "ela", "elf", "elan"];
const collator = new Intl.Collator("fr");
console.log([...words].sort(collator.compare));الحساسية
يتحكم sensitivity في الفروق المهمة: تتجاهل "base" حالة الأحرف وعلامات التشكيل، وتتجاهل "accent" حالة الأحرف فقط، بينما تميّز "variant" بين جميع الفروق.
const c = new Intl.Collator("en", { sensitivity: "base" });
console.log(c.compare("apple", "APPLE")); // 0 (treated equal)الترتيب الرقمي
ترتّب numeric: true الأرقام المضمّنة حسب قيمتها، لذلك يأتي «file2» قبل «file10».
const files = ["file10", "file2", "file1"];
const c = new Intl.Collator("en", { numeric: true });
console.log([...files].sort(c.compare)); // ["file1","file2","file10"]الترتيب حسب حالة الأحرف
يحدد caseFirst: "upper" أو "lower" ما إذا كانت الأحرف الكبيرة تسبق الصغيرة عندما تتساوى الفروق الأخرى.
const c = new Intl.Collator("en", { caseFirst: "upper" });
console.log(["b", "B", "a", "A"].sort(c.compare));أهمية locale في الترتيب
ترتّب اللغات المختلفة الحروف أبجديًا بطرق مختلفة. ففي السويدية، تأتي بعض الأحرف التي تحتوي على علامات تشكيل بعد z، لا بالقرب من a.
const words = ["z", "a", "o"];
console.log([...words].sort(new Intl.Collator("sv").compare));البحث باستخدام usage
يضبط usage: "search" Collator للمطابقة بدلًا من الترتيب، وهو مفيد للتصفية مع تجاهل علامات التشكيل.
const c = new Intl.Collator("en", { usage: "search", sensitivity: "base" });
function matches(a, b) { return c.compare(a, b) === 0; }
console.log(matches("cafe", "CAFE")); // trueترتيب الكائنات
استخدموا Collator مع مفتاح عند ترتيب مصفوفات من الكائنات.
const people = [{ name: "Bob" }, { name: "alice" }, { name: "Carol" }];
const c = new Intl.Collator("en");
console.log(people.sort((a, b) => c.compare(a.name, b.name)).map((p) => p.name));اختبار سريع
اختبروا الترتيب المراعي لـ locale.
مراجعة: الترتيب المراعي لـ locale
عرفتم سبب خطأ sort() الافتراضي، واستخدمتم localeCompare وIntl.Collator الأسرع، وتعاملتم مع علامات التشكيل والحساسية والترتيب الرقمي وحالة الأحرف والأبجديات الخاصة بكل locale ومطابقة البحث. وهكذا اكتملت دورة Intl.
الأسئلة الشائعة
هل درس «الفرز المراعي للإعدادات المحلية» مجاني؟
نعم — نص درس «الفرز المراعي للإعدادات المحلية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «الفرز المراعي للإعدادات المحلية»؟
افرزوا السلاسل النصية بشكل صحيح باستخدام Intl.Collator. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الفرز المراعي للإعدادات المحلية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تنسيق الأرقام والعملات
- تنسيق التواريخ والأوقات
- الوقت النسبي وصيغ الجمع
- الفرز المراعي للإعدادات المحلية