Maison >interface Web >js tutoriel >Pourquoi la méthode `map` de JavaScript ignore-t-elle les éléments non définis dans les tableaux clairsemés ?

Pourquoi la méthode `map` de JavaScript ignore-t-elle les éléments non définis dans les tableaux clairsemés ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 01:10:10119parcourir

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

Comprendre la création d'un tableau et la méthode map en JavaScript

Lors de la création d'un tableau à l'aide de la nouvelle expression Array(count), vous créez essentiellement un tableau clairsemé. Les tableaux clairsemés contiennent des « trous » ou des éléments non définis au niveau des indices auxquels aucune valeur n'a été explicitement attribuée. Ce comportement diffère des tableaux créés à l'aide de la syntaxe littérale de tableau ([1, 2, 3]), qui ont défini des valeurs pour tous les éléments.

La méthode map, quant à elle, tente d'appliquer une fonction de transformation à chaque élément d'un tableau. Cependant, lorsqu'elle est appliquée à un tableau clairsemé, la méthode map ignore les éléments non définis et transforme uniquement les éléments définis. Cela explique le comportement apparemment inattendu observé dans l'extrait de code donné.

Résoudre le problème

Pour résoudre ce problème, on peut résoudre le problème de la rareté du tableau avant d'appliquer le méthode cartographique. La méthode Array.prototype.fill() peut être utilisée pour attribuer une valeur par défaut (telle que non définie) à tous les éléments du tableau. Alternativement, la méthode map peut être combinée avec une instruction conditionnelle pour transformer uniquement les éléments définis :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn