【问题标题】:Sum values from objects stored in an array对存储在数组中的对象的值求和
【发布时间】:2020-06-22 04:37:07
【问题描述】:

我是 JavaScript 新手,我已经尝试了很多东西。我必须对函数内每个人的所有值(等级)求和。所以当我用

在外面调用函数时
console.log(totalNumberOfGrades(// I have to put here any of the three person objects... ));

所以函数内部可以对值求和。我在循环中使用.reducefor...进行了尝试,但是当我使用数组allPerson 时,我无法弄清楚如何访问objects 属性的值。感谢您的帮助,我会继续学习。

var person1 = {
    gradeMath: 2,
    gradeBio: 3,
    gradeEnglish: 1
};

var person2 = {
    gradeMath: 1,
    gradeBio: 2,
    gradeEnglish: 2
};

var person3 = {
    gradeMath: 3,
    gradeBio: 4,
    gradeEnglish: 3
};

var allPerson = [person1, person2, person3];

function totalNumberOfGrades(person) {
    // return the sum of grades for each person

}

结果如下所示:

console.log(totalNumberOfGrades(person1); = 6

【问题讨论】:

标签: javascript arrays object func


【解决方案1】:

Object.values 上使用forEach

var person1 = {
    gradeMath: 2,
    gradeBio: 3,
    gradeEnglish: 1
};

function totalNumberOfGrades(person) {
  let sum = 0;
  Object.values(person).forEach(val => (sum += val));
  return sum;
}

console.log(totalNumberOfGrades(person1));

【讨论】:

    【解决方案2】:

    我假设你想对每个对象的每个等级求和

    var person1 = {
      gradeMath: 2,
      gradeBio: 3,
      gradeEnglish: 1
    };
    
    var person2 = {
      gradeMath: 1,
      gradeBio: 2,
      gradeEnglish: 2
    };
    
    var person3 = {
      gradeMath: 3,
      gradeBio: 4,
      gradeEnglish: 3
    };
    
    var allPerson = [person1, person2, person3];
    
    const result = allPerson.reduce((acc, x) => {
      const sumAllGrades = Object.values(x).reduce((acc, y) => acc + y, 0);
      return acc + sumAllGrades;
    }, 0)
    console.log(result)

    【讨论】:

      【解决方案3】:

      您可以使用Object.valuesArray.reduce prototype

      function totalNumberOfGrades(person) { // return the sum of grades for each person
        return Object.values(person) // return array: [2, 3, 1] with person1
                     .reduce((total, grade) => total + grade, 0)
      }
      

      【讨论】:

        猜你喜欢
        • 2016-09-05
        • 2021-08-09
        • 2020-02-26
        • 2018-04-05
        • 2022-12-04
        • 2019-09-17
        • 1970-01-01
        • 2018-06-22
        • 1970-01-01
        相关资源
        最近更新 更多