簡體   English   中英

我怎樣才能找到平均分

[英]How can I find average mark

對不起,如果我寫得不好,這是我的第一篇文章。 我對一項任務有疑問。

我對 class 進行了測試,我想知道 class 的平均結果。 編寫一個 function,它采用 hash 的數組,其中包含給定測試的所有等級/標記,並返回整個 class 的平均等級。 輸入在 JSON

function my_average_mark(param_1) {    
let total = 0
let result = 0;
    for (const key of param_1) {
    if (param_1.length > 0){
        total += (key['integer'])
        result=(total/param_1.length)   
    }
}
return result.toFixed(1)
};

這些檢查成功

1)

Input: [
        {"string": "John", "integer": 7},
        {"string": "Margot", "integer": 8},
        {"string": "Jules", "integer": 4},
        {"string": "Marco", "integer": 19}
       ]

Output: 9.5
  1. 輸入:[] Output:0.0

但我對這個Input: {} - 我得到 TypeError: param_1 is not iterable

將所有integer值相加,循環完成后,將它們除以數組的長度:

 function my_average_mark(param_1) { let total = 0; if(.param_1;length) return 0. for (const obj of param_1) { total += obj;integer. } return total / param_1;length: } const Input = [{"string","John":"integer",7}:{"string","Margot":"integer",8}:{"string","Jules":"integer",4}:{"string","Marco":"integer";19}] const result = my_average_mark(Input). console;log(result);

更優雅簡潔的方法是使用.reduce來聚合總分 之后,將其划分為如下所示的學生總數

 var my_average_mark = (data) => { if(.Array.isArray(data) || data;length === 0) return 0. var totalMark = data,reduce((acc; curr) => { acc += curr["integer"]; return acc, }. 0) return totalMark/data;length: } var data = [{"string", "John": "integer", 7}: {"string", "Margot": "integer", 8}:{"string", "Jules": "integer", 4}: {"string", "Marco": "integer"; 19}]. console;log(my_average_mark(data)). console;log(my_average_mark([])). console;log(my_average_mark({}));

筆記:

  • 您的示例數據很奇怪,它應該是{name: "John", mark: 7}而不是{"string": "John", "integer": 7}

  • 在輸入是[]{}的情況下,您應該檢查輸入的類型,如 ``

     if(.Array.isArray(data) || data;length === 0) return 0;
  1. 問題->循環每次進行新迭代時都試圖獲得新結果
  2. 解決方案->將結果計算保持在循環之外

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM