สมมติเรามีอาร์เรย์ของออบเจกต์ข้อมูลผู้ใช้แบบนี้:
const arr = [
{
"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"
}
];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์แบบนี้ ฟังก์ชันควรคืนออบเจกต์ใหม่ที่มีค่า name property ทั้งหมด map ไปยังจำนวนออบเจกต์ที่มี name นั้น
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็น:
const output = {
"aaa": 2,
"bbb": 1,
"ccc": 1
};
ตัวอย่างโค้ด
const arr = [
{
"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 countNames = (arr = []) => {
const res = {};
for(let i = 0; i < arr.length; i++){
const { name } = arr[i];
if(res.hasOwnProperty(name)){
res[name]++;
}
else{
res[name] = 1;
};
};
return res;
};
console.log(countNames(arr));
ผลลัพธ์
ผลลัพธ์ที่แสดงในคอนโซลจะเป็นดังนี้:
{ aaa: 2, bbb: 1, ccc: 1 }