javascript - 在reduce中将空数组设置为空数组中的初始值
问题描述
当对一个空数组设置为初始值的空数组执行reduce时,显然不能将一个值推送到该初始空数组(无法推送),而当对一个数组执行reduce时可以一个空值。为什么它在没有空值的第一个场景中不起作用?
为什么不[]
设置为初始值(reduce的第二个参数)算作一个元素?例如,您可以对一个空数组执行 reduce,并将 0 设置为初始值:
[].reduce((prev, curr) => prev + curr, 0) // 0
[].reduce((arr, curr) => {
arr.push('val')
return arr
}, []);
// []
[null].reduce((arr, curr) => {
arr.push('val')
return arr
}, []);
// ['val']
解决方案
空数组没有元素,因此它不会运行 reduce 函数。但是 [null] 数组只有一个元素“null”。所以这个数组运行reduce函数。