我正在处理一个练习,在此练习中,我需要从一个数组的数组开始(即二维数组),使用 reduce 和 concat 方法将其缩减为一个包含每个子数组中所有元素的单一数组。因此,我从以下内容开始:
我用以下方法解决了这个练习:
所以它可以工作,输入
但如果我这样修改函数:
我得到了这个错误:
var array = [[1,2,3],[4,5,6],[7,8,9]]
我用以下方法解决了这个练习:
var new_array = array.reduce(function(prev,cur){return prev.concat(cur);})
所以它可以工作,输入
console.log(new_array)
我得到了这个:[1, 2, 3, 4, 5, 6, 7, 8, 9]
但如果我这样修改函数:
var new_array = array.reduce(function(prev,cur){return prev.concat(cur);},0)
我得到了这个错误:
为什么会出现这个错误?"TypeError: prev.concat 不是一个函数
Array.prototype.reduce
的第二个(可选)参数是初始值。在您的情况下,您将0
作为初始值传递,因此第一次函数运行时,它尝试调用prev.concat
,这显然会失败,因为Number
没有concat
方法。 - haim770