جافا سكريبت: فرز مجموعة من الكائنات حسب قيمة الخاصية

جافا سكريبت: فرز مجموعة من الكائنات حسب قيمة الخاصية
JavaScript

فرز كائنات JavaScript حسب خاصية السلسلة

يعد فرز مصفوفات الكائنات مهمة شائعة في JavaScript، خاصة عند العمل مع البيانات التي يجب عرضها بترتيب معين. يتضمن أحد السيناريوهات النموذجية فرز مجموعة من الكائنات حسب قيمة خاصية سلسلة، مثل اسم العائلة أو العنوان.

في هذه المقالة، سنستكشف كيفية فرز مصفوفة من كائنات JavaScript حسب قيمة خاصية السلسلة. سنختبر استخدام طريقة `sort()` ونناقش ما إذا كانت الخطوات الإضافية ضرورية، مثل إضافة طريقة `toString()` إلى الكائنات.

يأمر وصف
sort(function(a, b) {...}) يحدد وظيفة فرز مخصصة لتحديد ترتيب عناصر الصفيف بناءً على معايير محددة.
localeCompare() يقارن سلسلتين في اللغة الحالية، ويعيد رقمًا يشير إلى ما إذا كانت السلسلة المرجعية تأتي قبل أو بعد أو هي نفس السلسلة المحددة.
console.log() يقوم بإخراج المعلومات إلى وحدة التحكم، عادةً لأغراض تصحيح الأخطاء.

شرح تفصيلي لفرز كائنات جافا سكريبت

تم تصميم البرامج النصية المذكورة أعلاه لفرز مجموعة من كائنات JavaScript حسب قيمة خاصية سلسلة تسمى last_nom. في المثال الأول نستخدم sort(function(a, b) {...}) الطريقة، والتي تسمح لنا بتحديد وظيفة الفرز المخصصة. تقارن هذه الوظيفة بين last_nom خاصية كل كائن. إذا كان الكائن الأول last_nom أقل من الكائن الثاني last_nom، فتُرجع -1، مما يشير إلى أن الكائن الأول يجب أن يأتي قبل الثاني. إذا كان الكائن الأول last_nom أكبر، ترجع 1، مما يعني أن الكائن الأول يجب أن يأتي بعد الثاني. إذا كانت متساوية، فإنها ترجع 0، مما يشير إلى أن مواقعها يجب أن تظل دون تغيير.

يستخدم البرنامج النصي الثاني بناء جملة ES6 أكثر إيجازًا. ال localeCompare() يتم استخدام الطريقة داخل sort() وظيفة للمقارنة last_nom خصائص الكائنات. تقوم هذه الطريقة بإرجاع رقم يشير إلى ما إذا كانت السلسلة تأتي قبل أو بعد أو هي نفس سلسلة أخرى في اللغة الحالية. ال console.log() يتم استخدام الوظيفة في كلا البرنامجين لإخراج المصفوفة التي تم فرزها إلى وحدة التحكم للتحقق منها. تقوم كلتا الطريقتين بفرز مجموعة الكائنات بشكل فعال حسب last_nom الخاصية، مما يوضح كيفية التعامل مع فرز خصائص الكائنات في JavaScript.

فرز مجموعة من الكائنات حسب خاصية السلسلة في JavaScript

جافا سكريبت من جانب العميل

var objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort(function(a, b) {
    if (a.last_nom < b.last_nom) {
        return -1;
    }
    if (a.last_nom > b.last_nom) {
        return 1;
    }
    return 0;
});

console.log(objs);

فرز مجموعة من الكائنات حسب خاصية السلسلة باستخدام بناء جملة ES6

ES6 جافا سكريبت

const objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));

console.log(objs);

فرز مجموعة من الكائنات حسب خاصية السلسلة في JavaScript

جافا سكريبت من جانب العميل

var objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort(function(a, b) {
    if (a.last_nom < b.last_nom) {
        return -1;
    }
    if (a.last_nom > b.last_nom) {
        return 1;
    }
    return 0;
});

console.log(objs);

فرز مجموعة من الكائنات حسب خاصية السلسلة باستخدام بناء جملة ES6

ES6 جافا سكريبت

const objs = [
    {first_nom: 'Laszlo', last_nom: 'Jamf'},
    {first_nom: 'Pig', last_nom: 'Bodine'},
    {first_nom: 'Pirate', last_nom: 'Prentice'}
];

objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));

console.log(objs);

تقنيات متقدمة لفرز الكائنات في جافا سكريبت

عند فرز مجموعة من الكائنات حسب خاصية سلسلة في JavaScript، من الضروري فهم تعقيدات هذه الخاصية sort() طريقة. بشكل افتراضي، sort() تقوم الطريقة بفرز العناصر كسلاسل. يمكن أن يؤدي هذا إلى نتائج غير متوقعة عند التعامل مع الأرقام أو الأحرف الخاصة. لضمان الفرز الدقيق، خاصة مع خصائص السلسلة، يجب عليك استخدام وظيفة مقارنة مخصصة. بالإضافة إلى localeCompare()، هناك أسلوب مفيد آخر وهو التعامل مع حساسية حالة الأحرف. تعتبر مقارنة سلاسل جافا سكريبت حساسة لحالة الأحرف بشكل افتراضي، لذلك سيتم اعتبار "a" أقل من "A". لتجنب ذلك، يمكنك تحويل كافة السلاسل إلى أحرف صغيرة أو كبيرة ضمن وظيفة المقارنة الخاصة بك.

جانب آخر مهم يجب مراعاته هو الفرز حسب خصائص متعددة. على سبيل المثال، إذا كان هناك كائنين لهما نفس الشيء last_nom القيمة، قد ترغب في فرزها بشكل أكبر first_nom. يمكن تحقيق ذلك من خلال توسيع وظيفة المقارنة المخصصة لتشمل شروطًا إضافية. ويضمن هذا الفرز متعدد المستويات ترتيب البيانات بشكل شامل، مما يوفر نتائج ذات معنى أكبر. من خلال فهم تقنيات الفرز المتقدمة هذه وتطبيقها، يمكنك التعامل مع سيناريوهات فرز البيانات الأكثر تعقيدًا بشكل فعال في JavaScript.

أسئلة شائعة حول فرز كائنات JavaScript

  1. كيف يمكنك فرز مجموعة من الكائنات حسب خاصية السلسلة؟
  2. استخدم ال sort() طريقة مع وظيفة مقارنة مخصصة، وذلك باستخدام localeCompare() لمقارنة السلسلة.
  3. هل فرز جافا سكريبت حساس لحالة الأحرف؟
  4. نعم افتراضيا. قم بتحويل السلاسل إلى أحرف صغيرة أو كبيرة داخل وظيفة المقارنة لتجنب ذلك.
  5. كيف يمكنك التعامل مع الفرز حسب خصائص متعددة؟
  6. قم بتوسيع وظيفة المقارنة المخصصة لتشمل شروطًا إضافية للفرز حسب الخصائص الثانوية.
  7. هل تحتاج إلى إضافة أ toString() طريقة للكائنات الخاصة بك للفرز؟
  8. لا، يكفي استخدام وظيفة المقارنة المخصصة.
  9. ماذا فعلت localeCompare() يفعل؟
  10. فهو يقارن سلسلتين في اللغة الحالية ويعيد رقمًا يشير إلى ترتيبهما.
  11. هل يمكنك فرز الكائنات حسب الخصائص الرقمية باستخدام نفس الطريقة؟
  12. نعم، يمكنك تخصيص وظيفة المقارنة للتعامل مع المقارنات الرقمية أيضًا.
  13. كيف يمكنك إخراج المصفوفة التي تم فرزها؟
  14. يستخدم console.log() لطباعة المصفوفة التي تم فرزها إلى وحدة التحكم للتحقق منها.
  15. ما هي أهمية القيم المرجعة في دالة المقارنة؟
  16. وهي تحدد ترتيب العناصر: -1 للأقل من، 1 للأكبر من، و0 للتساوي.

اختتام فرز الكائنات في JavaScript

يمكن فرز مصفوفة من الكائنات حسب خاصية سلسلة في JavaScript بكفاءة باستخدام sort() طريقة مع وظيفة مقارنة مخصصة. عن طريق المديونية localeCompare() والتعامل مع حساسية الحالة، يمكنك ضمان فرز البيانات بشكل دقيق وهادف. إن فهم هذه التقنيات يسمح بمعالجة البيانات وعرضها بشكل أفضل، مما يلبي السيناريوهات الأكثر تعقيدًا بسهولة. بالإضافة إلى ذلك، يضيف الفرز حسب خصائص متعددة طبقة أخرى من التطور، مما يجعل المخرجات التي تم فرزها أكثر ملاءمة وتنظيمًا.