Javascript 为什么将空数组作为参数传递给.reduce?
我在这里阅读开发者文档: 我只是想知道为什么会有一个空数组被传递,而您通常会指示initialvalueJavascript 为什么将空数组作为参数传递给.reduce?,javascript,arrays,Javascript,Arrays,我在这里阅读开发者文档: 我只是想知道为什么会有一个空数组被传递,而您通常会指示initialvalue 我能看到的唯一好处是,如果您试图展平的阵列是空的。在这种情况下,如果没有传递初始值,.reduce将抛出一个错误,因为没有可迭代的内容,也没有可立即返回的初始值 当要缩减的数组没有项时,将返回初始值。如果没有初始值,则抛出以下错误 const makeFlat=arr=>arr.reduce 累加器,currentValue=>acculator.concatcurrentValue ;
我能看到的唯一好处是,如果您试图展平的阵列是空的。在这种情况下,如果没有传递初始值,.reduce将抛出一个错误,因为没有可迭代的内容,也没有可立即返回的初始值 当要缩减的数组没有项时,将返回初始值。如果没有初始值,则抛出以下错误 const makeFlat=arr=>arr.reduce 累加器,currentValue=>acculator.concatcurrentValue ; console.logmakeFlat['foo']];//好啊
console.logmakeFlat[];//错误上述代码在累加器上调用concat,concat只在数组和字符串上工作,因此它被初始化为空数组
要了解更多有关的信息,通常需要在此处指示初始值,因为在本例中,它是一个正常的初始值。尽管实际上,除非输入数组为空,否则数组连接并不重要。此外,这是一个非常糟糕的二次时间示例,可由.flat替换,并且可能应该从MDN中编辑。如果第一个元素不是一个数组,因为它会被用作初始值而抛出,例如[1、[2,3]、[4,5]、6,7]。