البرمجة

ترتيب مصفوفة الكائنات في جافا سكريبت بناءً على أعلى قيمة للعمر

عند التعامل مع مصفوفة من الكائنات في لغة البرمجة جافا سكريبت وترغب في ترتيبها بناءً على قيمة معينة في كل كائن، يمكنك القيام بذلك باستخدام دوال فلتر وتجميع البيانات. في هذا السياق، تريد ترتيب المصفوفة الأصلية بناءً على أعلى قيمة للعمر (age) لكل قيمة فريدة للمعرف (id). سأقوم بشرح كيفية تحقيق ذلك بشكل مفصل.

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

javascript
// المصفوفة الأصلية const originalArray = [ { id: 1, age: 23 }, { id: 1, age: 25 }, { id: 2, age: 230 }, { id: 2, age: 255 }, { id: 3, age: 232 }, { id: 1, age: 215 } ]; // هيكل البيانات لتخزين أعلى قيمة للعمر لكل معرف const highestAgeMap = {}; // تصفية المصفوفة الأصلية وتجميع البيانات originalArray.forEach(obj => { const { id, age } = obj; if (!(id in highestAgeMap) || age > highestAgeMap[id]) { highestAgeMap[id] = age; } }); // إنشاء المصفوفة النهائية بناءً على البيانات المجمعة const finalArray = Object.keys(highestAgeMap).map(id => ({ id: parseInt(id), age: highestAgeMap[id] })); // ترتيب المصفوفة النهائية بناءً على أعلى قيمة للعمر finalArray.sort((a, b) => b.age - a.age); // الطباعة console.log(finalArray);

باستخدام هذا الكود، يتم توليد المصفوفة النهائية كما هو مطلوب، حيث تكون مرتبة وتحتوي على أعلى قيمة للعمر لكل معرف فريد.

المزيد من المعلومات

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

أولًا، قمنا بإنشاء مصفوفة originalArray التي تحتوي على الكائنات الأصلية. ثم قمنا بإنشاء هيكل بيانات إضافي يُسمى highestAgeMap، وهو كائن يستخدم لتخزين أعلى قيمة للعمر لكل معرف فريد.

في جولة الفلترة والتجميع originalArray.forEach()، قمنا بفحص كل كائن في المصفوفة الأصلية واستخراج قيم المعرف (id) والعمر (age). ثم قمنا بفحص ما إذا كان المعرف قد تمت معالجته من قبل (موجود في highestAgeMap) وإذا كان ذلك الحال، قمنا بمقارنة قيم العمر واختيار الأعلى. هذا يضمن أن يتم الاحتفاظ بأعلى قيمة للعمر لكل معرف.

بعد الانتهاء من جولة المصفوفة الأصلية، لدينا highestAgeMap الذي يحتوي على أعلى قيمة للعمر لكل معرف فريد.

ثم قمنا باستخدام Object.keys(highestAgeMap) للحصول على مصفوفة تحتوي على مفاتيح المعرفات الفريدة. استخدمنا map لإنشاء مصفوفة جديدة (finalArray) تحتوي على كائنات معرفة بالمعرف وأعلى قيمة للعمر.

أخيرًا، استخدمنا finalArray.sort() لترتيب المصفوفة النهائية بناءً على قيم العمر بترتيب تنازلي.

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

زر الذهاب إلى الأعلى