ترتيب المجموعاتJavaScript
- الصفحة السابقة بحث JS Arrays
- الصفحة التالية تكرار JS Arrays
sort()
الطريقة هي واحدة من أكثر طرق القائمة قوة
ترتيب القائمة
sort()
الطريقة ترتب القائمة حسب الترتيب الأبجدي للأعداد
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // ترتيب العناصر في fruits
عكس القائمة
reverse()
يستخدم هذا الطريقة لتحويل عناصر القائمة.
يمكنك استخدامها لترتيب القيم في ترتيب تنازلي:
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // ترتيب العناصر في fruits fruits.reverse(); // عكس ترتيب العناصر
ترتيب الأرقام
بالافتراض،sort()
تقوم الدالة بترتيبالنصوصلترتيب القيم.
تعتبر هذه الدالة مناسبة للنصوص (سيتم وضع "Apple" قبل "Banana").
لكن، إذا تم ترتيب الأرقام كنصوص، فإن "25" أكبر من "100" لأن "2" أكبر من "1".
لذلك،sort()
يؤدي هذا الطريقة إلى نتائج غير صحيحة عند ترتيب الأرقام.
نحن نستخدموظيفة القياسلإصلاح هذه المشكلة:
مثال
تعريف points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
استخدم نفس التقنية لترتيب القيم في ترتيب تنازلي:
مثال
تعريف points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
وظيفة القياس
يهدف وظيفة المقارنة إلى تعريف ترتيب آخر.
يجب أن تعود وظيفة المقارنة بـ قيمة سلبية، صفر أو إيجابية، اعتمادًا على المعاملات:
function(a, b){return a-b}
عند sort()
عند مقارنة قيمتين بواسطة الدالة، سيتم إرسال القيم إلى وظيفة المقارنة، ثم سيتم ترتيب القيم بناءً على القيمة التي يعود بها (سلبية، صفر أو إيجابية).
مثال:
عند مقارنة 40 و 100،sort()
ستدعو هذه الطريقة إلى وظيفة المقارنة function(40,100).
يحسب هذا الدالة 40-100، ثم يعود بـ -60 (قيمة سلبية).
وظيفة الترتيب ستقوم بترتيب 40 كأقل قيمة من 100.
يمكنك استخدام قطعة الكود التالية لاختبار الترتيب الرقمي والابجدي:
<button onclick="myFunction1()">ترتيب بالترتيب الأبجدي</button> <button onclick="myFunction2()">ترتيب بالترتيب الرقمي</button> <p id="demo"></p> <script> تعريف points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
ترتيب المجموعة بترتيب عشوائي
مثال
تعريف points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
البحث عن أعلى (أو أقل) قيمة في مجموعة
JavaScript لا يقدم وظيفة مدمجة للبحث عن أكبر أو أصغر قيمة في مجموعة.
على الرغم من ذلك، بعد تصنيف المجموعة، يمكنك استخدام المؤشر للحصول على أعلى أو أقل قيمة.
ترتيب تصاعدي:
مثال
تعريف points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // الآن points[0] يحتوي على الأقل قيمة // و points[points.length-1] يحتوي على الأعلى قيمة
ترتيب تنازلي:
مثال
تعريف points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // الآن points[0] يحتوي على الأعلى قيمة // و points[points.length-1] يحتوي على الأقل قيمة
إذا كنت بحاجة فقط إلى العثور على أعلى أو أقل قيمة، فإن تصنيف المجموعة بأكملها هو طريقة غير فعالة جداً.
استخدام Math.max() على المجموعة
يمكنك استخدام Math.max.apply
للعثور على الأعلى قيمة في المجموعة:
مثال
وظيفة myArrayMax(arr) { الرجوع إلى Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
يساوي Math.max(1, 2, 3)
.
استخدام Math.min() على المجموعة
يمكنك استخدام Math.min.apply
للعثور على الأقل قيمة في المجموعة:
مثال
وظيفة myArrayMin(arr) { الرجوع إلى Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
يساوي Math.min(1, 2, 3)
.
طرق Min / Max JavaScript الخاصة بي
أسرع طريقة لحل المشكلة هي استخدام "الطريقة الذاتية".
هذه الوظيفة تتجول في المجموعة وتقارن كل قيمة بالأعلى قيمة التي وجدها:
مثال (البحث عن Max)
وظيفة myArrayMax(arr) { تعريف طول المجموعة = طول arr تعريف القيمة القصوى = -Infinity; while (len--) { إذا (قيمة arr[len] أكبر من القيمة القصوى) { القيمة القصوى = arr[len]; } } الرجوع إلى max; }
هذه الوظيفة تتجول في المجموعة وتقارن كل قيمة بالأقل قيمة التي وجدها:
مثال (البحث عن Min)
وظيفة myArrayMin(arr) { تعريف طول المجموعة = طول arr var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
ترتيب مجموعات العناصر
غالبًا ما تحتوي مجموعات JavaScript على عناصر:
مثال
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
حتى لو كان لدي العناصر أنواع بيانات مختلفة من الخصائص،sort()
يمكن استخدام الطريقة نفسها لترتيب المدخلات.
الحل هو استخدام دالة مقارنة لاستخدام مقارنة القيمة الخاصية:
مثال
cars.sort(function(a, b){return a.year - b.year});
سيكون تحديد خصائص النصوص أكثر تعقيدًا:
مثال
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- الصفحة السابقة بحث JS Arrays
- الصفحة التالية تكرار JS Arrays