Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ใน JavaScript จำเป็นต้องทำผลรวมของไดนามิกอาร์เรย์


สมมติว่าเรามีอาร์เรย์ที่มีคะแนนของผู้เล่นบางคนในกีฬาประเภทต่างๆ คะแนนจะแสดงในลักษณะนี้ -

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

เราต้องเขียนฟังก์ชันที่ใช้ในอาร์เรย์นี้และคืนค่าออบเจ็กต์เดียวที่มีค่า forsport key เป็น "all" และคีย์ของผู้เล่นอื่นๆ ควรมีผลรวมของค่าที่เป็นอ็อบเจ็กต์ที่ไม่แยแสของอาร์เรย์ ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −

เราจะใช้วิธี Array.prototype.reduce() ที่นี่เพื่อลดผลรวมของคะแนนในกีฬาที่แตกต่างกันของผู้เล่นทั้งหมด รหัสสำหรับการทำเช่นนี้จะเป็น -

ตัวอย่าง

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

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

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