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
   }
]

เราต้องนับการเกิดชื่อซ้ำ เช่น ผลลัพธ์ควรเป็น

John: 3
David: 2
Bob: 1

สำหรับสิ่งนี้ คุณสามารถใช้แนวคิดของ reduce()

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

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 }
]