Javascript concat不是一个函数

时间:2018-02-27 15:02:34

标签: javascript

嗨,这段代码不起作用我得到错误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




2 个答案:

答案 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);}, [])