了解JavaScript 中的陣列建立和map 方法
使用new Array(count) 運算式建立陣列時,您實際上建立了陣列一個稀疏數組。稀疏數組在未明確分配值的索引處包含「空洞」或未定義的元素。此行為與使用陣列文字語法 ([1, 2, 3]) 建立的陣列不同,後者為所有元素定義了值。
另一方面,map 方法嘗試應用轉換函數到陣列的每個元素。但是,當應用於稀疏數組時,map 方法會跳過未定義的元素,僅轉換已定義的元素。這解釋了在給定程式碼片段中觀察到的看似意外的行為。
解決問題
要解決此問題,可以在應用地圖方法。 Array.prototype.fill() 方法可用於為陣列中的所有元素指派預設值(例如 undefined)。或者,map 方法可以與條件語句結合使用,僅轉換定義的元素:
var x = new Array(3).fill(undefined); var y = x.map(function(e) { return e !== undefined ? 0 : 1; }); console.log(y); // [1, 1, 1]
以上是為什麼 JavaScript 的「map」方法會跳過稀疏數組中未定義的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!