【问题标题】:Object (name, surname, index number, table with grades) with a method that calculates the grade average对象(姓名,姓氏,索引号,带有成绩的表)具有计算平均成绩的方法
【发布时间】:2022-01-05 23:25:30
【问题描述】:

所以我一直在努力解决这个大学任务。我对如何解决这个问题有一个大概的了解,但我只是想出了一些不起作用或不真正符合任务要求的解决方案。

任务如下所示。

使用对象初始化器创建一个对象,分配描述您的属性(姓名,姓氏,索引号,带有等级的表)。为计算平均成绩的对象分配一个方法

这是可行的解决方案,但不完全是应该做的。

      function Grade (math, science, programming, management){
    this.math = math;
    this.science = science;
    this.programming = programming;
    this.management = management;

    return (math + science + programming + management)/arguments.length;
}

    

const student = {
        name: 'John',
        surname: 'Smith', 
        index: 'x4sx4sd',
        grade: Grade(5,4,5,5)
    }

console.log(student);

这是我的尝试,但没有成功,但我认为仍然更接近真相,但没有平均部分

const student = {
        name: 'John',
        surname: 'Smith', 
        index: 'xxxxx',
        grade: 
        {
            math: 5,
            science: 5,
            language: 5,
            marketing: 5,
            management: 5

        },
        gradeAvg: function(grade){
            grade=this.grade;
            let total = 0;
            for (let value in object){
                total += grade[value]
            }
            return total;  
        }
    
    }

console.log(student);

我知道这是一个小白问题,我已经尽我所能在谷歌上搜索,但可以找到任何东西,任何帮助将不胜感激。

【问题讨论】:

    标签: javascript function methods


    【解决方案1】:

    将您的gradeAvg 更改为getter 函数,该函数将在您加载对象时执行。此外,要获得平均值(需要计数),您可以使用 Object.entries 访问计数(将对象转换为数组),然后获取长度

    const student = {
      name: 'John',
      surname: 'Smith',
      index: 'xxxxx',
      grade: {
        math: 2,
        science: 5,
        language: 5,
        marketing: 1,
        management: 5
      },
      get gradeAvg() {
        let total = 0;
        for (let value in this.grade) {
          total += this.grade[value]
        }
        return total / Object.entries(this.grade).length;
      }
    }
    
    console.log(student);

    【讨论】:

      【解决方案2】:

      首先,您需要将成绩对象从 Object 转换为数组,以便对所有元素求和。 Object.values 会这样做,所以 {a: 1, b: 2} 会变成 [1, 2]。接下来,您需要获得成绩的数量,然后您可以将总和除以得到平均值。您需要做的最后一件事是我们之前创建的数组的总和,reduce array method 用于将数组缩减为一个值。

              get GradeAvg() {
                  const gradesArray = Object.values(this.grade);
                  const gradesCount = gradesArray.length;
                  const gradesSum = gradesArray.reduce((sum, current) => {
                      sum += current;
                      return sum;
                  })
      
                  return gradesSum / gradesCount;
              }
      

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 2015-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        相关资源
        最近更新 更多