Heim >Web-Frontend >js-Tutorial >Warum überspringt die „map'-Methode von JavaScript undefinierte Elemente in Sparse-Arrays?

Warum überspringt die „map'-Methode von JavaScript undefinierte Elemente in Sparse-Arrays?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 01:10:10119Durchsuche

Why Does JavaScript's `map` Method Skip Undefined Elements in Sparse Arrays?

Array-Erstellung und die Map-Methode in JavaScript verstehen

Wenn Sie ein Array mit dem neuen Array(count)-Ausdruck erstellen, erstellen Sie im Wesentlichen ein spärliches Array. Sparse-Arrays enthalten „Löcher“ oder undefinierte Elemente an Indizes, denen keine expliziten Werte zugewiesen wurden. Dieses Verhalten unterscheidet sich von Arrays, die mit der Array-Literal-Syntax ([1, 2, 3]) erstellt wurden und für alle Elemente definierte Werte haben.

Die Map-Methode hingegen versucht, eine Transformationsfunktion anzuwenden zu jedem Element eines Arrays. Bei Anwendung auf ein Array mit geringer Dichte überspringt die Map-Methode jedoch die undefinierten Elemente und transformiert nur die definierten Elemente. Dies erklärt das scheinbar unerwartete Verhalten, das im angegebenen Codeausschnitt beobachtet wird.

Beheben des Problems

Um dieses Problem zu beheben, kann man die Sparsität des Arrays beheben, bevor man das anwendet Kartenmethode. Mit der Methode Array.prototype.fill() kann allen Elementen im Array ein Standardwert (z. B. undefiniert) zugewiesen werden. Alternativ kann die Map-Methode mit einer bedingten Anweisung kombiniert werden, um nur definierte Elemente zu transformieren:

var x = new Array(3).fill(undefined);
var y = x.map(function(e) { return e !== undefined ? 0 : 1; });
console.log(y); // [1, 1, 1]

Das obige ist der detaillierte Inhalt vonWarum überspringt die „map'-Methode von JavaScript undefinierte Elemente in Sparse-Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn