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

นับจำนวนครั้งที่ชื่อซ้ำในอาร์เรย์อ็อบเจ็กต์ - JavaScript

มีอาร์เรย์อ็อบเจ็กต์นักศึกษา ต้องการนับจำนวนครั้งที่ชื่อแต่ละคนปรากฏ

ตัวอย่างโค้ด

var details = [
  { studentName: "John", studentAge: 23 },
  { studentName: "David", studentAge: 24 },
  { studentName: "John", studentAge: 21 },
  { studentName: "John", studentAge: 25 },
  { studentName: "Bob", studentAge: 22 },
  { studentName: "David", studentAge: 20 }
];

var output = Object.values(details.reduce((obj, { studentName }) => {
  if (obj[studentName] === undefined)
    obj[studentName] = { studentName: studentName, occurrences: 1 };
  else
    obj[studentName].occurrences++;
  return obj;
}, {}));

console.log(output);

รันด้วยคำสั่ง:

node fileName.js

ชื่อไฟล์: demo282.js

ผลลัพธ์

PS C:\Users\Amit\javascript-code> node demo282.js
[ { studentName: 'John', occurrences: 3 }, { studentName: 'David', occurrences: 2 }, { studentName: 'Bob', occurrences: 1 } ]

คำอธิบาย: ใช้ reduce() สร้างอ็อบเจ็กต์สะสมจำนวน แล้ว Object.values() แปลงเป็นอาร์เรย์

วิธีทันสมัย: ใช้ Map หรือ Array.from(new Set(...)) ร่วมกับ filter() จะกระชับกว่า