إذا كنت في JavaScript لفترة من الوقت ، فيجب أن تعرف أن نوع وظيفة فرز الصفيف هو طريقة في النموذج الأولي للمصفوفة ، وهي Array.prototype.sort () ، الفرز (comparefunction) ، حيث تكون CompareFunction وظيفة مقارنة. لنلقي نظرة على وصف من MDN MDN:
إذا لم يتم توفير CompareFunction ، يتم فرز العناصر عن طريق تحويلها إلى سلاسل ومقارنة السلاسل في ترتيب المعجم ("القاموس" أو "دفتر الهاتف" ، وليس العددي). على سبيل المثال ، "80" يأتي قبل "9" في ترتيب معجمي ، ولكن في النوع الرقمي 9 يأتي قبل 80.
فيما يلي بعض الأمثلة البسيطة:
نسخة الكود كما يلي:
// الإخراج [1 ، 2 ، 3]
console.log ([3 ، 2 ، 1] .Sort ()) ؛
// الإخراج ["A" ، "B" ، "C"]
console.log (["C" ، "B" ، "A"]. sort ()) ؛
// الإخراج [1 ، 2 ، "A" ، "B"]
console.log (["B" ، 2 ، "A" ، 1] .Sort ()) ؛
كما يتضح من المثال أعلاه ، يتم فرز الافتراضي بالترتيب الأبجدي للقاموس.
لحسن الحظ ، تقبل Sort وظيفة مقارنة مخصصة ، كما هو موضح في المثال التالي:
نسخة الكود كما يلي:
وظيفة comparefunction (a ، b) {
إذا (a> b) {
العودة -1 ؛
} آخر إذا (a <b) {
العودة 1 ؛
}آخر {
العودة 0 ؛
}
}
// المخرجات ["Zuojj" ، "Benjamin" ، "1"]
console.log (["Benjamin" ، "1" ، "Zuojj"]. sort (comparefunction)) ؛
بعد الفرز ، لدينا سؤال آخر: كيفية التحكم في الترتيب الصاعد والهبوط؟
نسخة الكود كما يلي:
وظيفة comparefunction (flag) {
العلم = العلم؟ العلم: "ASC" ؛
وظيفة الإرجاع (أ ، ب) {
إذا (a> b) {
العلم إرجاع === "DESC"؟ -1: 1 ؛
} آخر إذا (a <b) {
العلم إرجاع === "DESC"؟ 1: -1 ؛
}آخر {
العودة 0 ؛
}
} ؛
}
// المخرجات ["1" ، "بنيامين" ، "Zuojj"]
console.log (["Benjamin" ، "1" ، "Zuojj"]. sort (comparefunction ())) ؛
// المخرجات ["Zuojj" ، "Benjamin" ، "1"]
console.log (["Benjamin" ، "1" ، "Zuojj"]. sort (comparefunction ("desc"))) ؛
قواعد الفرز للمقارنة هي كما يلي:
1. إذا قام بإرجاع رقم سالب ، فسيتم فرز A إلى فهرس أقل في الصفيف.
2. إذا قام بإرجاع رقم إيجابي ، فسيتم فرز A إلى فهرس أعلى.
3. وإذا عاد 0 ، فلا يوجد فرز ضروري.
دعونا نلقي نظرة على ممر مستقل من MDN MDN:
تم تغيير سلوك طريقة الفرز بين JavaScript 1.1 و JavaScript 1.2. لشرح هذا الوصف ، دعونا نلقي نظرة على مثال:
في JavaScript 1.1 ، على بعض المنصات ، لا تعمل طريقة الفرز. تعمل هذه الطريقة على جميع المنصات لـ JavaScript 1.2.
في JavaScript 1.2 ، لم تعد هذه الطريقة تحول عناصر غير محددة إلى خالية ؛ بدلاً من ذلك ، يقوم بفرزهم إلى الطرف العالي من الصفيف. الرجاء النقر هنا للحصول على التفاصيل.
نسخة الكود كما يلي:
var arr = [] ؛
arr [0] = "ant" ؛
arr [5] = "zebra" ؛
// المخرجات ["Ant" ، 5: "Zebra"]
console.log (arr) ؛
// المخرجات 6
console.log (arr.length) ؛
// مخرجات "Ant ****** Zebra"
console.log (arr.join ("*")) ؛
//نوع
var sortarr = arr.sort () ؛
// المخرجات ["Ant" ، "Zebra"]
console.log (sortarr) ؛
// المخرجات 6
console.log (sortarr.length) ؛
// مخرجات "ant*zebra ****"
console.log (sortarr.join ("*")) ؛
آمل أن تكون هذه المقالة مفيدة لك لتعلم وفهم طريقة Sort (). آمل أن تنتقد وتصحيح أي جوانب غير لائقة في المقالة.
الرابط المرجعي: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort