البرمجة

حساب عدد ظهور المفاتيح في مصفوفة الكائنات

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

هنا الكود بالكامل:

javascript
const array = [ { "name": "aaa", "id": "2100", "designation": "developer" }, { "name": "bbb", "id": "8888", "designation": "team lead" }, { "name": "ccc", "id": "6745", "designation": "manager" }, { "name": "aaa", "id": "9899", "designation": "sw" } ]; const key = "name"; const keyCounts = array.reduce((acc, obj) => { const keyValue = obj[key]; if (acc[keyValue]) { acc[keyValue]++; } else { acc[keyValue] = 1; } return acc; }, {}); console.log(keyCounts);

هذا الكود سينتج:

javascript
{ "aaa": 2, "bbb": 1, "ccc": 1 }

حيث يظهر عدد ظهور كل مفتاح في المصفوفة.

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

بالتأكيد! يمكننا تحسين الكود بإجراء التحقق من وجود المفتاح مباشرةً في حلقة الـ reduce دون الحاجة إلى حلقة الـ map. يمكننا أيضًا استخدام الدالة الجديدة Object.fromEntries لتحويل مصفوفة الأزواج إلى كائن.

هنا الكود المحسن:

javascript
const array = [ { "name": "aaa", "id": "2100", "designation": "developer" }, { "name": "bbb", "id": "8888", "designation": "team lead" }, { "name": "ccc", "id": "6745", "designation": "manager" }, { "name": "aaa", "id": "9899", "designation": "sw" } ]; const key = "name"; const keyCounts = Object.fromEntries(array.reduce((acc, obj) => { const keyValue = obj[key]; acc.set(keyValue, (acc.get(keyValue) || 0) + 1); return acc; }, new Map())); console.log(keyCounts);

هذا الكود ينتج نفس النتيجة كما سابقًا:

javascript
{ "aaa": 2, "bbb": 1, "ccc": 1 }

إذا كان لديك أي أسئلة إضافية، فلا تتردد في طرحها!

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