Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo mảng liên kết (associative array) với push() trong JavaScript

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.