لحساب عدد الظهورات لكل مفتاح في مصفوفة الكائنات، يمكنك استخدام جملة الـ map لإنشاء مجموعة فريدة من المفاتيح ثم استخدام جملة الـ reduce لحساب عددها. في حلقة الـ map، يتم فحص كل عنصر في المصفوفة وإضافته إلى الكائن الفريد إذا لم يكن موجودًا بالفعل، وإذا كان موجودًا، يتم زيادة عدد ظهوره بواحد. ثم، تقوم حلقة الـ reduce بجمع عدد الظهور لكل مفتاح.
هنا الكود بالكامل:
javascriptconst 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
لتحويل مصفوفة الأزواج إلى كائن.
هنا الكود المحسن:
javascriptconst 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
}
إذا كان لديك أي أسئلة إضافية، فلا تتردد في طرحها!
الوسوم
Array of Objects javascript