Javascript 究竟什么是concat+;应用什么方法展平阵列?

Javascript 究竟什么是concat+;应用什么方法展平阵列?,javascript,Javascript,我基本上记住了这个[].concat.apply([],a)来展平嵌套不深的数组,但我不完全理解它是如何工作的。例如,apply从何而来 它是否比arr.reduce((x,y)=>[…x,…y])更有效?这有几个方面: concat展平(到一个级别)传递到其中的数组,只包括它们在结果数组中的元素: console.log([1,2,3].concat(4,5,6,7,8])调用apply相当于使用扩展语法: [].concat.apply([], a) [].concat(...a) 它只

我基本上记住了这个
[].concat.apply([],a)
来展平嵌套不深的数组,但我不完全理解它是如何工作的。例如,
apply
从何而来


它是否比arr.reduce((x,y)=>[…x,…y])更有效?

这有几个方面:

concat
展平(到一个级别)传递到其中的数组,只包括它们在结果数组中的元素:


console.log([1,2,3].concat(4,5,6,7,8])调用
apply
相当于使用扩展语法:

[].concat.apply([], a)
[].concat(...a)

它只是将一个空数组与
a
的所有值连接起来,并将多个参数传递给。它在一个步骤中构建了一个新的数组,这比创建大量中间结果的
reduce
解决方案更有效。

这一点得到了特别的解释@T.J.Crowder,谢谢你。
concat
的这种行为非常令人困惑@dashesy-大好时光。:-)