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

Trong JavaScript, cần tính tổng mảng động

Cho mảng điểm số người chơi các môn thể thao:

const scores = [
  {sport: 'cricket', aman: 54, vishal: 65, jay: 43, hardik: 88, karan:23},
  {sport: 'soccer', aman: 14, vishal: 75, jay: 41, hardik: 13, karan:73},
  {sport: 'hockey', aman: 43, vishal: 35, jay: 53, hardik: 43, karan:29},
  {sport: 'volleyball', aman: 76, vishal: 22, jay: 36, hardik: 24, karan:47},
  {sport: 'baseball', aman: 87, vishal: 57, jay: 48, hardik: 69, karan:37},
];

Viết hàm nhận mảng này, trả về object duy nhất: sport="all", các key người chơi là tổng điểm qua các môn.

Dùng reduce cộng dồn điểm các key không phải 'sport'.

Ví dụ

const scores = [
  {sport: 'cricket', aman: 54, vishal: 65, jay: 43, hardik: 88, karan:23},
  {sport: 'soccer', aman: 14, vishal: 75, jay: 41, hardik: 13, karan:73},
  {sport: 'hockey', aman: 43, vishal: 35, jay: 53, hardik: 43, karan:29},
  {sport: 'volleyball', aman: 76, vishal: 22, jay: 36, hardik: 24, karan:47},
  {sport: 'baseball', aman: 87, vishal: 57, jay: 48, hardik: 69, karan:37},
];

const sumScores = (arr) => {
  return arr.reduce((acc, val) => {
    Object.keys(val).forEach(key => {
      if (key !== 'sport') {
        acc[key] += val[key];
      }
    });
    if (acc['sport'] !== 'all') {
      acc['sport'] = 'all';
    }
    return acc;
  });
};

console.log(sumScores(scores));

Kết quả

Đầu ra trong console sẽ là:

{ sport: 'all', aman: 274, vishal: 254, jay: 221, hardik: 237, karan: 209 }