如何產生特定長度的陣列
說明
在某些情況下,會需要初始化陣列,初始化包含兩個部分:指定長度、塞入初始值。常見的做法,不外乎就是用for
或while
來實作。
1 | var i = 0, size = 4, arr1 = [], arr2 = []; |
使用方法
這裡要來分享怎麼用Array.prototype.fill()簡短地初始化陣列。
1 | var arr = new Array(4).fill(1).map(function(value, index) { |
問題
你可能會問:幹嘛要用fill來做這件事? 直接在new Array
後直接用map()
塞值就好了啊!
回答
我的回答:因為用new Array
建立的陣列,它並非我們預測的,會將每個位置都放入undefined
,反倒是定義了陣列的長度而已。因此,它根本不會去迭代,想當然爾,就不會執行map()
了。
驗證
1 | var arr = new Array(4), |
參考資料
Array.prototype.fill() - MDN
Object.prototype.hasOwnProperty() - MDN
JavaScript “new Array(n)” and “Array.prototype.map” weirdness - StackOverflow