【发布时间】:2018-04-25 12:34:45
【问题描述】:
变量min 将包含给定数组中4 个最小项的总和。
变量 max 将包含给定数组中 4 个最大项的总和。
JS:
function main() {
const arr = [1, 2, 3, 4, 5]
const min = arr.sort().filter((element, index, array) => element !== array[array.length - 1]).reduce((accumulator, currentValue) => {
return accumulator + currentValue
})
const max = arr.sort().filter((element, index, array) => element !== array[0]).reduce((accumulator, currentValue) => {
return accumulator + currentValue
})
console.log(min, max)
}
main()
正如预期的那样,[1,2,3,4,5] 将导致 10、14。但是,如果给定数组是 [5,5,5,5,5],则程序将返回 TypeError: Reduce of empty array with no initial value。
这是为什么?
谢谢。
【问题讨论】:
-
为什么?因为您没有在 .reduce 中指定初始值 - 只需将 0 作为该函数的第二个参数。 // 此外,您的过滤逻辑与您提供的目标描述不匹配 - 但这完全是另一回事。
-
我想你忘了提到数组包含
5元素?
标签: javascript sorting filter functional-programming reduce