首页 > 解决方案 > 减少 ES6 函数中的对象数组

问题描述

我对我正在处理的 reduce 函数有点困惑。如果我声明一个变量并将其设置为等于减少迭代,我打算减少一个对象数组,它工作得很好:

movies = [
  {
    title: 'The Shawshank Redemption',
    rate: '9.3'
  },
  {
    title: 'The Godfather',
    rate: '9.2'
  },
  {
    title: 'The Godfather: Part II',
    rate: '9.0'
  }
  ]
  
const averageRating = movies.reduce((sum, current) => {
    return (sum + parseFloat(current.rate)) / 3;
  }, 0);
  
 console.log(averageRating)

但是,如果我尝试将其编写为 ES6 函数,它会告诉我 sum 未定义:

movies = [
  {
    title: 'The Shawshank Redemption',
    rate: '9.3'
  },
  {
    title: 'The Godfather',
    rate: '9.2'
  },
  {
    title: 'The Godfather: Part II',
    rate: '9.0'
  }
  ]

ratesAverage = (array) => {
    array.reduce((sum, movies) => {
        return sum + parseFloat(movies.rate);
      }, 0)
}

console.log(ratesAverage(movies))

我在这里想念什么?

非常感谢提前

标签: javascript

解决方案


如果将箭头函数用大括号括起来,return则需要声明。

只有省略大括号时,才会隐式返回表达式的值。


movies = [
  {
    title: 'The Shawshank Redemption',
    rate: '9.3'
  },
  {
    title: 'The Godfather',
    rate: '9.2'
  },
  {
    title: 'The Godfather: Part II',
    rate: '9.0'
  }
]

ratesAverage = (array) => {
    return array.reduce((sum, movies) => {
        return sum + parseFloat(movies.rate);
      }, 0)
}

console.log(ratesAverage(movies))


推荐阅读