JS 里怎样给数组添补默认值

本日看到一段代码:

Array.apply(null, Array(30)).map(() => 4)

这代码的写法没法让人一下明白它的企图。
Google 以后晓得它的作用是组织一个长度为 30 的数组,默许值是 4。

剖析

然则为何要写得这么别扭呢?我们来分解下它每一步在做什么:

Array.apply(null, Array(30)) 

这一段代码天生一个长度为30的数组,内里的值都是 undefined
以后的 .map(() => 4) :担任添补默许值

然则为何组织一个空值数组须要这么贫苦呢?还要用上 apply 要领,尝试用 Array(30).map(() => 4) 来天生数组的话,你会获得如许的一个效果,根本就没有值。

[ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]

检察文档 能够看到 Array 的组织函数语法,能够得知 Array 支撑两种组织体式格局。运用参数情势给定 N 个数组元素,或许给定一个数组长度。
不过比较主要的一点文档里没提到,运用 new Array(arrayLength) 体式格局组织的数组是一个希罕数组,内里是没有任何值的,只要长度。所以这个体式格局组织出来的数组是没法遍历的,也就没法用 map 遍历添补值了。

晓得了上述的缘由,我们就可以明白:

Array.apply(null, Array(30))
实在即是
Array.apply(null, [, , , , , , , , , , , , , , , , , , , , , , , , , , , , ,]))

然后我们要继续相识 apply 要领,在这里能够看 apply 的作用 文档诠释, 这里不作引见。apply 要领会把天生的希罕数组睁开并当作参数再次传给 Array 的组织函数,就是如许子:

Array(null,null,null......))

如许终究就会获得一个数组,如许就不是希罕数组了,内里是有值的,虽然是 undefined。

[ undefined, undefined, undefined ……]

结语

总结下,实在就是 js 的 Array 的默许组织函数天生的是希罕数组,是没法用 map 遍历添补的。所以才写得这么绕。

不过,说了这么多,要完成底本的需求,实在有更简朴的要领啦:

Array(30).fill(4)

fill 要领的申明

    原文作者:Jude
    原文地址: https://segmentfault.com/a/1190000007651029
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞