理解使用new Array(count) 建立的陣列上的映射行為
使用JavaScript 陣列時,值得注意一個特殊的行為由使用語法new Array(count) 建立的陣列展示。
如程式碼片段所示下面,在使用 new Array(count) 建立的稀疏數組(包含未定義元素的陣列)上呼叫 map()會產生一個包含未定義值的陣列:
var x = new Array(3); x.map(function() { return 0; }); // [undefined, undefined, undefined]
相反,在密集數組上執行相同的操作相同長度的數組(沒有未定義元素的數組)按預期工作:
var y = [undefined, undefined, undefined]; y.map(function() { return 0; }); // [0, 0, 0]
這種差異源自於new Array(count) 建立稀疏數組的事實數組,這表示它不會為其元素分配預設值。因此,map() 無法對未定義的元素執行任何操作,從而產生未定義值的陣列。
要解決此問題,您可以使用文字數組語法來建立密集數組或明確填充使用 Array.prototype.fill().
等方法具有所需預設值的稀疏數組以上是為什麼「map()」在使用「new Array(count)」建立的陣列上傳回未定義的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!