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

วิธีที่ดีที่สุดในการ reduce และ merge คอลเลกชันของออบเจกต์ - JavaScript

วิธีที่ดีที่สุดในการ reduce และ merge คอลเลกชันของออบเจกต์ ใช้แนวคิดของ Object.values() พร้อมกับ reduce()

ต่อไปนี้คือออบเจกต์:

var details = [
  { studentId: 10, marks: 75, studentName: "John" },
  { studentId: 10, marks: 75, studentName: "John" },
  { studentId: 11, marks: 98, studentName: "Bob" }
];

ตัวอย่าง

var details = [
  { studentId: 10, marks: 75, studentName: "John" },
  { studentId: 10, marks: 75, studentName: "John" },
  { studentId: 11, marks: 98, studentName: "Bob" }
];
output = Object.values(details.reduce((value, object) => {
  if (value[object.studentId]) {
    ['marks'].forEach(key => value[object.studentId][key] = value[object.studentId][key] + object[key]);
  } else {
    value[object.studentId] = { ...object };
  }
  return value;
}, {}));
console.log(output);

เพื่อรันโปรแกรมข้างต้น ใช้คำสั่งต่อไปนี้:

node fileName.js.

ที่นี่ ชื่อไฟล์ของฉันคือ demo237.js

ผลลัพธ์

ผลลัพธ์มีดังนี้:

PS C:\Users\Amit\javascript-code> node demo237.js
[
  { studentId: 10, marks: 150, studentName: 'John' },
  { studentId: 11, marks: 98, studentName: 'Bob' }
]