Computer >> Máy Tính >  >> Lập trình >> Javascript

Trong JavaScript, cần thực hiện tính tổng của mảng động

Giả sử, chúng tôi có một mảng chứa điểm của một số người chơi ở các môn thể thao khác nhau. Các lỗ được biểu diễn như thế này -

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},
];

Chúng ta phải viết một hàm nhận trong mảng này và trả về một đối tượng duy nhất có khóa forsport giá trị là “tất cả” và khóa trình phát khác phải có tổng giá trị là các đối tượng không quan tâm của mảng. Do đó, hãy viết mã cho chức năng này -

Chúng tôi sẽ sử dụng phương thức Array.prototype.reduce () ở đây để giảm tổng điểm trong các loại khác nhau của tất cả người chơi. Mã để thực hiện việc này sẽ là -

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

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