Maison >interface Web >js tutoriel >ECMAScript 6 nous apportera bientôt un aperçu des nouvelles compétences en matière de méthodes d'opération de tableau_javascript
Cet article présente les nouvelles méthodes de fonctionnement des tableaux qu'ECMAScript 6 nous apportera et comment appliquer ces nouvelles fonctionnalités de tableau dans les navigateurs existants.
Remarque : j'utiliserai les termes constructeur et classe de manière interchangeable.
Méthode de classe
Méthodes appartenant à Array lui-même.
Array.from(arrayLike, mapFunc?, thisArg?)
La fonction de base d'Array.from() est de convertir deux types d'objets en tableaux.
Objets de type tableau
Ce type d'objet a des propriétés de longueur et d'index. Le résultat de l'opérateur DOM appartient à cette classe, comme document.getElementsByClassName().
Objets itérables
Lorsque ce type d'objet prend une valeur, il ne peut prendre qu'un seul élément à la fois. Les tableaux sont itérables, tout comme les nouvelles structures de tableaux dans ECMAScript, Map et Set.
Le code suivant est un exemple de conversion d'un objet de type tableau en tableau :
Le résultat de querySelectorAll() n'est pas un tableau et il n'y a pas de méthode forEach(). C'est pourquoi nous devons le convertir en tableau avant d'utiliser cette méthode.
Utiliser le mappage via Array.from()
Array.from() est également une alternative à l'utilisation de map() avec des génériques.
Le deuxième paramètre dans les deux méthodes est une fonction flèche.
Dans cet exemple, le résultat de document.querySelectorAll() est un objet de type tableau, pas un tableau. C'est pourquoi nous ne pouvons pas appeler directement map(). Dans le premier exemple, afin d'utiliser forEach(), nous convertissons l'objet de type tableau en tableau. Nous utilisons ici la méthode générique et la version à deux paramètres de Array.from(), éliminant l'étape intermédiaire.
Trous
Array.from() ignore les éléments manquants - les trous - dans le tableau et les traite comme des éléments non définis.
Cela signifie que vous pouvez utiliser Array.from() pour créer ou remplir un tableau :
Si vous souhaitez remplir un tableau avec une valeur fixe, alors Array.prototype.fill() (voir ci-dessous) sera un meilleur choix. La première concerne les deux manières de l’exemple ci-dessus.
from()
dans la sous-classe Array
Un autre cas d'utilisation d'Array.from() consiste à convertir un objet de type tableau ou un objet itérable en une instance d'une sous-classe de tableau (Array). Si vous créez une sous-classe Array MyArray et souhaitez convertir un tel objet en une instance de MyArray, vous pouvez simplement utiliser MyArray.from(). La raison pour laquelle cela peut être utilisé est que dans ECMAScript 6, les constructeurs sont hérités (le constructeur de la classe parent est le prototype de son constructeur de sous-classe).
Vous pouvez combiner cette fonctionnalité avec le mappage, en complétant l'opération de carte à un endroit où vous contrôlez le constructeur de résultat :
Si vous souhaitez convertir un ensemble de valeurs en tableau, vous devez utiliser un tableau littéral. Surtout lorsqu'il n'y a qu'une seule valeur et qu'il s'agit d'un nombre, le constructeur de tableau échouera. Veuillez vous référer à cette page pour plus d'informations.
Que devons-nous faire si nous voulons convertir un ensemble de valeurs en une instance d'un sous-constructeur numérique ? C'est la valeur de Array.of() (rappelez-vous, le sous-constructeur de tableau hérite de toutes les méthodes de tableau, y compris of() bien sûr).
Array.of() sera très pratique pour envelopper et imbriquer la valeur dans un tableau, sans la méthode de traitement étrange comme Array(). Mais faites également attention à Array.prototype.map(), il y a des pièges ici :
Comme vous pouvez le voir, map() transmettra trois paramètres à son rappel. Les deux derniers sont souvent négligés (détails).
Méthodes prototypes
De nombreuses nouvelles méthodes seront disponibles pour les instances de tableau.
Itérer sur des tableaux
Les méthodes suivantes aideront à terminer l'itération dans le tableau :
Chacune des méthodes ci-dessus renverra une chaîne de valeurs, mais pas sous forme de tableau. Ils seront affichés les uns après les autres via l'itérateur. Regardons un exemple (j'utiliserai Array.from() pour mettre le contenu de l'itérateur dans un tableau) :
Vous pouvez combiner inputs() avec la boucle for-of dans ECMAScript 6 pour décomposer facilement l'objet itéré en paires clé-valeur :
Remarque : ce code peut déjà s'exécuter dans le dernier navigateur Firefox. t Firefox.
Trouver des éléments du tableau
Array.prototype.find(predicate, thisArg?) renverra le premier élément qui satisfait la fonction de rappel. Si aucun élément ne satisfait à la condition, il renvoie undéfini. Par exemple :
renverra l'index du premier élément qui satisfait la fonction de rappel. Si aucun élément satisfaisant n’est trouvé, -1 est renvoyé. Par exemple :
Les deux méthodes find* ignoreront les trous, c'est-à-dire qu'elles ne prêteront pas attention aux éléments non définis. La signature de la fonction d'achèvement du rappel est :
prédicat(élément, index, tableau)
Trouvez NaN
Array.prototype.indexOf() a une limitation bien connue, c'est-à-dire qu'il ne peut pas trouver NaN. Parce qu'il utilise l'identité (===) pour trouver les éléments correspondants :
En utilisant findIndex(), vous pouvez utiliser Object.is(), ce qui ne posera pas de tels problèmes :
Vous pouvez également adopter une approche plus générale et créer une fonction d'assistance elemIs() :
Remplissez un tableau avec la valeur donnée :
Les trous ne recevront aucun traitement particulier :
Vous pouvez également limiter le début et la fin de votre remplissage :
Quand puis-je utiliser les nouvelles méthodes de tableau ?
Certaines méthodes sont déjà disponibles dans le navigateur.