下面,我重现我的代码以计算食物的平均评分。

3 + 4 + 5 + 2 // 4应该等于3.5。
但这不能给我正确的输出。我的代码有什么问题?

const ratings = [
  {food:3},
  {food:4},
  {food:5},
  {food:2}
];

let food = 0;

ratings.forEach((obj,index)=>{
  food = (food + obj.food)/++index
})

console.log("FOOD",food)

最佳答案

尽管有几个答案,我还是想增加我的注意力以提高代码质量:

  • 您可以在forEach()中使用分解来获取对象的food属性,因为这只是您感兴趣的属性。
  • 尽管进行了内部循环划分,但在循环完成后我们只能进行一次划分操作。当数组很大(成千上万个对象)时,这样可以节省大量计算时间
  • 您可以在循环中使用像+=这样的简写形式来求和。
  • 您可以在forEach()中创建单个行代码


  • const ratings = [
      {food:3},
      {food:4},
      {food:5},
      {food:2}
    ];
    
    let foodTotal = 0;
    let length = ratings.length;
    ratings.forEach(({food})=> foodTotal += food);
    
    console.log("FOOD",foodTotal/length);

    关于javascript - 如何从对象数组中获取平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52513123/

    10-13 00:19