为了账号安全,请及时绑定邮箱和手机立即绑定

带有 Reduce 和 Filter 的数组

带有 Reduce 和 Filter 的数组

陪伴而非守候 2021-11-25 19:26:18
我有一个问题。我正在学习 JavaScript,我是 StackOverflow 上的新手。所以,如果我有一个Array = [ 7, 5, 6, 1, 3, 7] 如何使用 Filter 和 Reduction 函数显示该数组的值大于这些数字的平均值?我已经这样做了const values = [5, 6, 10, 4, 3, 7, 1]function averageValues(v) {    let sum = 0    for(let i = 0; i < v.length; i++){        sum += v[i]    }    return sum/v.length}const average = averageValues(values)console.log('Average = ' + average)console.log(values.filter(function(v){    return v > average}))
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

使用 reduce 求平均值:

const average = values.reduce((acc, cur) => acc + cur) / values.length

然后你可以运行 run 你的其他函数:

values.filter(v => v > average)


查看完整回答
反对 回复 2021-11-25
?
心有法竹

TA贡献1866条经验 获得超5个赞

你可以这样做:

const values = [5, 6, 10, 4, 3, 7, 1]


const sum = values.reduce((a, b) => {

    return a + b;

}, 0);


const average = sum / values.length + 1


console.log(average)


在这个 reduce 函数中,你有 2 个参数。第一个a是当前值。第二个b蓄能器。

像这样减少工作的平均功能:

在第一次迭代中:

  • 累加器 (a) 等于 0

  • 当前值 (b) 等于 5(数组的第一个索引)

  • 5 被退回

在第二次迭代中:

  • 累加器 (a) 等于 5(它是前一个操作的结果)

  • 当前值 (b) 等于 6(数组的第二个索引)

  • 11 返回 (a + b)

等等 ...

如果你仔细观察,最后(大括号之后)你有一个零。这是初始值,如果您决定从 0 开始计数,则无需指定。但如果您希望可以指定 8,则在第一个循环中累加器的值等于 8。

在这种情况下,第一次迭代等于:

  • 累加器 (a) 等于 8

  • 当前值 (b) 等于 5

  • 13 被退回

最后总和将等于 44。


查看完整回答
反对 回复 2021-11-25
?
隔江千里

TA贡献1906条经验 获得超10个赞

由于您需要在此作业中使用 .reduce(),我将执行以下操作:


const values = [5, 6, 10, 4, 3, 7, 1];



function averageValues(v) {

    const reducer = (accumulator, currentValue) => accumulator + currentValue;

    return v.reduce(reducer)/v.length;

}


const average = averageValues(values);

console.log('Average = ' + average);


console.log(values.filter(v => v > average))


查看完整回答
反对 回复 2021-11-25
  • 3 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信