嗨,这段代码不起作用我得到错误concat不是一个函数:我该如何解决?
var o=[{r:[3,8]},{r:[2,3,4]}];
undefined
var R=o.reduce(function(x,y,z){ return x.concat(y.r);})
VM200964:1 Uncaught TypeError: x.concat is not a function

答案 0 :(得分:2)
您必须在x
[]
数组reduce
如果您不指定初始值(第二个参数),它将使用数组的第一个元素x
。哪个是对象,对象没有concat
函数。
ES6摘录
var o=[{r:[3,8]},{r:[2,3,4]}];
var R=o.reduce((x,y) => x.concat(y.r) , []);
console.log( R );
也可以使用:
var R=o.reduce(function(x,y,z){ return x.concat(y.r);},[]);
Doc:.reduce
答案 1 :(得分:0)
reduce()
遍历包含对象的列表o
。您没有提供初始值作为reduce()
的第二个参数,因此使用列表中的第一个项目。这意味着您尝试在对象上调用concat()
。但是对象没有concat()
作为函数。您需要提供一个初始的空数组:
var R=o.reduce(function(x,y,z){ return x.concat(y.r);}, [])