Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การนับจำนวนออบเจกต์ในอาร์เรย์ที่มี key เดียวกันใน JavaScript

สมมติเรามีอาร์เรย์ของออบเจกต์ข้อมูลผู้ใช้แบบนี้:

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 }