Maison  >  Article  >  interface Web  >  `slice()` est-il toujours le moyen le plus rapide de convertir une NodeList en un tableau ?

`slice()` est-il toujours le moyen le plus rapide de convertir une NodeList en un tableau ?

DDD
DDDoriginal
2024-10-27 22:55:30924parcourir

 Is `slice()` Still The Fastest Way to Convert a NodeList to an Array?

Conversion de NodeList JavaScript en tableau : considérations relatives à la vitesse

Des discussions précédentes sur le sujet de la conversion de NodeLists en tableaux ont affirmé que l'utilisation de slice() La méthode est l’approche la plus efficace. Cependant, des benchmarks récents ont révélé un résultat surprenant.

Observations de benchmark

Dans des expériences menées sur Chromium 6, il a été découvert que la création d'un tableau à partir d'une NodeList à l'aide d'un simple La boucle for surpasse la méthode slice() de plus de trois fois. Ce résultat est en conflit avec les affirmations antérieures concernant la supériorité de slice().

Explications possibles

La raison de cet écart peut provenir d'optimisations spécifiques au navigateur ou de différences dans JavaScript implémentations de moteurs. Il est possible que le moteur Chromium gère la boucle for plus efficacement dans ce scénario.

Solution alternative avec ES6

Avec l'avènement d'ES6, une nouvelle solution concise est disponible : la fonction Array.from(). Cette fonction peut créer rapidement et facilement un tableau à partir de n'importe quel objet itérable, y compris les NodeLists.

// nl is a NodeList
let myArray = Array.from(nl)

Conclusion

Bien que l'approche de la boucle for puisse offrir une vitesse surprenante dans certains navigateurs, la fonction Array.from() fournit une solution moderne et multiplateforme pour convertir des NodeLists en tableaux.

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