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

Group by mảng đối tượng trong JavaScript

Cho mảng mảng chứa điểm môn học:

const arr = [ 
  ["English", 52], ["Hindi", 154], ["Hindi", 241], 
  ["Spanish", 10], ["French", 65], ["German", 98], ["Russian", 10] 
];

Viết hàm trả về object của object, mỗi môn học có: số lần xuất hiện, tổng điểm, điểm trung bình.

Ví dụ

const arr = [ 
  ["English", 52], ["Hindi", 154], ["Hindi", 241], 
  ["Spanish", 10], ["French", 65], ["German", 98], ["Russian", 10] 
]; 
const groupSubjects = arr => { 
  const grouped = arr.reduce((acc, val) => { 
    const [key, total] = val; 
    if(!acc.hasOwnProperty(key)){ 
      acc[key] = { 'count': 0, 'total': 0 }; 
    }; 
    const accuKey = acc[key]; 
    accuKey['count']++; 
    accuKey['total'] += total; 
    accuKey['average'] = total / accuKey['count']; 
    return acc; 
  }, {}); 
  return grouped; 
}; 
console.log(groupSubjects(arr));

Kết quả

Kết quả in ra console:

[ 
  English: { count: 1, total: 52, average: 52 }, 
  Hindi: { count: 2, total: 395, average: 120.5 }, 
  Spanish: { count: 1, total: 10, average: 10 }, 
  French: { count: 1, total: 65, average: 65 }, 
  German: { count: 1, total: 98, average: 98 }, 
  Russian: { count: 1, total: 10, average: 10 } 
]