微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎样才能找到平均分数

如何解决我怎样才能找到平均分数

对不起,如果我写得不好,这是我的第一篇文章我有一项任务有问题。

我有一个班级考试,我想知道该班级的平均成绩。编写一个函数,该函数采用包含给定测试的所有成绩/分数的哈希数组,并返回整个班级的平均成绩。输入为 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. 输入:[] 输出: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. 解决方案 -> 将结果计算保持在循环之外

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。