Dùng forEach() duyệt mảng object, gom nhóm theo studentId vào object kết quả, dùng push() thêm tên vào mảng của từng ID.
Ví dụ
var students = [
{ studentId: 1, studentName: "John" },
{ studentId: 1, studentName: "David" },
{ studentId: 2, studentName: "Bob" },
{ studentId: 2, studentName: "Carol" }
];
var grouped = {};
students.forEach(obj => {
// Khởi tạo mảng nếu key chưa tồn tại
grouped[obj.studentId] = grouped[obj.studentId] || [];
// Thêm tên vào mảng
grouped[obj.studentId].push(obj.studentName);
});
console.log(grouped);
Cách chạy
node demo.js
Kết quả
{
'1': [ 'John', 'David' ],
'2': [ 'Bob', 'Carol' ]
}
Cách hiện đại (reduce):
const grouped = students.reduce((acc, {studentId, studentName}) => {
(acc[studentId] = acc[studentId] || []).push(studentName);
return acc;
}, {});
Map/Set (ES2015+): Dùng Map cho key không phải string.