تصف هذه المقالة كيف يستخدم JS Array.prototype.sort () لفرز كائنات الصفيف. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
عند الحديث عن فرز كائنات الصفيف ، دعنا أولاً نفهم باختصار Array.prototype.sort (). تقبل طريقة الفرز معلمة - دالة. ستوفر الوظيفة معلمتين ، على التوالي ، عنصرين يتم مقارنتهما. إذا كان العنصر سلسلة ، فسيتم مقارنته من خلال رمز Unicode. إذا كان الرقم ، تتم مقارنة حجم القيمة. إذا تم إرجاع 1 في الوظيفة مقارنة ، فسيتم تبادل عنصرين ، ولن يتم تبادل 0 و -1. دعونا نلقي نظرة على مثال:
نسخة الكود كما يلي: var arr = [3 ، 5 ، 2 ، 1] ؛
// الفرز من صغير إلى كبير
arr.sort (وظيفة (a ، b) {
إرجاع أ> ب؟ 1: -1 ؛
}) ؛
// النتيجة هي: [1 ، 2 ، 3 ، 5]
لذا عد إلى موضوعنا ، كيف يجب أن أكتبه إذا قمت بفرز كائن صفيف؟ في الواقع ، المبدأ هو نفسه كما هو مذكور ، مثل:
انسخ الرمز على النحو التالي: var arr = [
{a: 2 ، b: 3.2} ،
{a: 3 ، b: 1.2} ،
{a: 4 ، b: 2.2} ،
{a: 6 ، b: 1.2} ،
{a: 5 ، b: 3.2}
]
/// مرتبة حسب السمة B من صغيرة إلى كبيرة
arr.sort (وظيفة (x ، y) {
إرجاع xb> yb؟ 1: -1 ؛
}) ؛
X و Y عنصران من ARR ، أي كائن ، بحيث يمكنك مقارنة خصائص الكائنين مباشرة.
في المثال أعلاه ، هناك نسخ في أصغر عنصر. إذا كان الشرط هو: الفرز الأول من صغير إلى كبير وفقًا لسمة B ، وإذا كانت هناك نسخ في الأصغر ، ثم فرز السمة A ، كيف يجب أن أكتبها؟
عند الفرز ، الفرز الأول بواسطة سمة B. إذا كان XB أكبر من YB ، فانتقل X إلى يمين Y. إذا كانت XB مساوية لـ YB ، فقم بمقارنها باستخدام XA و YA. لذلك ، فإن الرمز كما يلي:
انسخ الرمز كما يلي: arr.sort (وظيفة (x ، y) {
if (xb> yb) {
العودة 1 ؛
} آخر إذا (xb === yb) {
إرجاع xa> يا؟ 1: -1 ؛
} آخر إذا (xb <yb) {
العودة -1 ؛
}
})
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.