Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ใน JavaScript ต้องการทำผลรวมของ dynamic array


สมมติว่าเรามีอาร์เรย์ที่เก็บคะแนนของผู้เล่นบางคนในกีฬาต่างๆ คะแนนแสดงแบบนี้ −

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

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์นี้และคืนค่าออบเจกต์เดียวที่มีค่า sport 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 }