首頁 >web前端 >js教程 >為什麼「map()」在使用「new Array(count)」建立的陣列上傳回未定義的值?

為什麼「map()」在使用「new Array(count)」建立的陣列上傳回未定義的值?

Patricia Arquette
Patricia Arquette原創
2024-12-07 07:00:12746瀏覽

Why Does `map()` Return Undefined Values on Arrays Created with `new Array(count)`?

理解使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn