ترتيب الأسطر

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

إزالة الأسطر المكررة
إزالة الأسطر الفارغة

0 سطر.

كيف يعمل

يُقسَّم نصك عند فواصل الأسطر ويُرتَّب باستخدام دالة مقارنة تُحدَّد من القائمة المنسدلة. يستخدم الترتيب الأبجدي localeCompare، وهي المقارنة الواعية باللغة في المتصفح، بدلًا من رموز الأحرف الخام. هذا الفرق واضح فورًا: الترتيب الساذج حسب نقطة الرمز يضع كل حرف كبير قبل كل حرف صغير (لذا يُرتَّب "Zebra" قبل "apple")، ويشوّه ترتيب الأحرف المنقّطة. المقارنة الواعية باللغة ترتّب الكلمات بالطريقة نفسها التي يرتّبها بها القاموس.

يحلّل الترتيب الرقمي كل سطر باستخدام parseFloat ويقارن الأرقام، ما يصحّح الخلل الكلاسيكي في ترتيب النصوص حيث يأتي "10" قبل "9" لأن "1" حرف أصغر. تُعامَل الأسطر التي لا تبدأ برقم كأنها 0 وتُجمَّع معًا. يقارن الترتيب حسب الطول عدد الأحرف، ويستخدم الخلط العشوائي خوارزمية Fisher-Yates، التي تمنح كل ترتيب احتمالية متساوية. يستحق هذا توضيحًا: الحيلة الشائعة sort(() => Math.random() - 0.5) تنتج خلطًا متحيّزًا لأن خوارزميات الترتيب تفترض دالة مقارنة ثابتة، بينما تمر خوارزمية Fisher-Yates على المصفوفة مرة واحدة، مبدّلة كل عنصر بموضع سابق عشوائي منتظم التوزيع.

الترتيب التنازلي يرتّب تصاعديًا ثم يعكس، وتُنفَّذ إزالة التكرارات بعد الترتيب باستخدام Set بحيث تُحذف فقط التكرارات المطابقة تمامًا، ويمكن تصفية الأسطر الفارغة قبل كل ذلك. العملية بأكملها هي عمليات على مصفوفة نصية داخل تبويبك: لا يُطلق أي طلب عند اللصق أو الترتيب (تحقّق من ذلك في لوحة الشبكة بأدوات المطوّر)، لذا فإن ترتيب قائمة أسماء أو رسائل بريد أو مفاتيح لا يشمل خادمًا أبدًا.