為什麼陣列建立會影響陣列轉換?
在某些環境中,使用 new Array(count) 建立陣列會出現意外行為地圖方法。與使用文字語法(例如,[undefined, undefined, undefined])建立的陣列不同,透過 new Array(3) 建構的陣列不會使用 map 正確轉換其元素。
此行為歸因於未填滿的陣列。使用 new Array(count) 建立陣列時,產生的陣列的元素保持未定義狀態。這與使用文字語法建立的陣列不同,後者會自動以 undefined 初始化元素。
要解決此問題並確保映射正確運行,建議使用任何值填充數組元素,例如 undefined ,在嘗試轉換之前。 Array.prototype.fill() 方法可用於此目的。
例如,使用 new Array(count) 和 map 建立前 10 個整數的陣列:
let arr = new Array(10).fill(undefined).map((val, idx) => idx);
這將產生所需的輸出:
[0,1,2,3,4,5,6,7,8,9]
以上是為什麼使用「map()」時「new Array(count)」的行為與陣列文字不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!