带有 Reduce 和 Filter 的数组

我有一个问题。我正在学习 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

}))


陪伴而非守候
浏览 141回答 3
3回答

慕盖茨4494581

使用 reduce 求平均值:const&nbsp;average&nbsp;=&nbsp;values.reduce((acc,&nbsp;cur)&nbsp;=>&nbsp;acc&nbsp;+&nbsp;cur)&nbsp;/&nbsp;values.length然后你可以运行 run 你的其他函数:values.filter(v&nbsp;=>&nbsp;v&nbsp;>&nbsp;average)

心有法竹

你可以这样做:const values = [5, 6, 10, 4, 3, 7, 1]const sum = values.reduce((a, b) => {&nbsp; &nbsp; return a + b;}, 0);const average = sum / values.length + 1console.log(average)在这个 reduce 函数中,你有 2 个参数。第一个a是当前值。第二个b蓄能器。像这样减少工作的平均功能:在第一次迭代中:累加器 (a) 等于 0当前值 (b) 等于 5(数组的第一个索引)5 被退回在第二次迭代中:累加器 (a) 等于 5(它是前一个操作的结果)当前值 (b) 等于 6(数组的第二个索引)11 返回 (a + b)等等 ...如果你仔细观察,最后(大括号之后)你有一个零。这是初始值,如果您决定从 0 开始计数,则无需指定。但如果您希望可以指定 8,则在第一个循环中累加器的值等于 8。在这种情况下,第一次迭代等于:累加器 (a) 等于 8当前值 (b) 等于 513 被退回最后总和将等于 44。

隔江千里

由于您需要在此作业中使用 .reduce(),我将执行以下操作:const values = [5, 6, 10, 4, 3, 7, 1];function averageValues(v) {&nbsp; &nbsp; const reducer = (accumulator, currentValue) => accumulator + currentValue;&nbsp; &nbsp; return v.reduce(reducer)/v.length;}const average = averageValues(values);console.log('Average = ' + average);console.log(values.filter(v => v > average))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript