Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么将空数组作为参数传递给.reduce?_Javascript_Arrays - Fatal编程技术网

Javascript 为什么将空数组作为参数传递给.reduce?

Javascript 为什么将空数组作为参数传递给.reduce?,javascript,arrays,Javascript,Arrays,我在这里阅读开发者文档: 我只是想知道为什么会有一个空数组被传递,而您通常会指示initialvalue 我能看到的唯一好处是,如果您试图展平的阵列是空的。在这种情况下,如果没有传递初始值,.reduce将抛出一个错误,因为没有可迭代的内容,也没有可立即返回的初始值 当要缩减的数组没有项时,将返回初始值。如果没有初始值,则抛出以下错误 const makeFlat=arr=>arr.reduce 累加器,currentValue=>acculator.concatcurrentValue ;

我在这里阅读开发者文档:

我只是想知道为什么会有一个空数组被传递,而您通常会指示initialvalue


我能看到的唯一好处是,如果您试图展平的阵列是空的。在这种情况下,如果没有传递初始值,.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]。