jQuery.makeArray(obj) Il est facile de deviner son objectif à partir du nom : il doit être utilisé pour convertir l'objet entrant en un tableau natif
Jetons un coup d'œil au site officiel pour cela Explication : Convertissez un objet de type tableau en un véritable tableau JavaScript. (Convertissez un objet de type tableau en un tableau natif JS)
Alors, quel type d'objet peut être appelé " Et qu'en est-il de " tableau -comme un objet" ? Ne vous précipitez pas pour répondre à cette question. Je pense que vous comprendrez après avoir lu l'article. Tout d'abord, jetez un œil à l'expérience suivante
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery.makeArray demo</title> <style> p { color: red; } </style> <script src="//code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p> First </p> <p> Second </p> <p> Third </p> <p> Fourth </p> <script> // Returns a NodeList var elems = document.getElementsByTagName("p"); // Convert the NodeList to an Array var arr = jQuery.makeArray(elems); // Use an Array method on list of dom elements arr.reverse(); $(arr).appendTo(document.body); </script> </body> </html>
Vous pouvez. voyez-le en chrome ici Ce qui est renvoyé via document.getElementsByTagName("p") est une HTMLCollection
au lieu de la NodeList mentionnée sur le site officiel. J'ai spécifiquement recherché la différence entre NodeList et HTMLCollection : . L'objet HTMLCollection et l'objet NodeList sont très similaires, mais le premier est accessible à la fois en utilisant un nom et des index numériques, tandis que le second n'est accessible qu'en utilisant des index numériques (bien sûr, NodeList est également un "objet de type tableau ")
Par L'expérience a révélé que les éléments peuvent être indexés par nom et par tableau. Conclusion : ce qui est renvoyé par document.getElementsByTagName("p") dans Chrome est une HTMLCollection
HTMLCollection peut obtenir sa longueur via elems.length, et sa longueur peut être obtenue via elems.length Est-ce que elems[0] accède aux éléments
comme la méthode d'accès d'un tableau ? En fait, il s'agit simplement d'un "objet de type tableau", mais ce n'est pas un tableau natif de js, donc les méthodes natives du tableau ne sont pas accessibles, telles que (.pop() et .reverse())
Ensuite, l'arr du tableau JS natif est obtenu via la conversion jQuery.makeArray(elems), et vous pouvez ensuite utiliser la méthode native de tableau !
En plus de HTMLCollection, que peut-on convertir d'autre ? Avez-vous déjà entendu parler des tableaux encapsulés par jQuery ?
Mais j'ai dû le rencontrer. Par exemple, vous pouvez obtenir un groupe de p via $('p'). Ce groupe de p est un tableau enveloppé par jQuery
Un autre exemple. , via .map( )La fonction obtient également un tableau encapsulé par jQuery Vous pouvez également utiliser length pour obtenir la longueur et y accéder via l'index d'indice. Et le tableau encapsulé par jQuery peut également utiliser les méthodes. fourni par jQuery.
peut être converti en un tableau natif via $.makeArray(obj). Par exemple, la méthode la plus courante consiste à obtenir le tableau jQuery dans la fonction .map(), puis à le convertir en un tableau natif et. puis obtenez le résultat via join()
Bien sûr, il existe plusieurs façons de convertir des tableaux enveloppés par jQuery en tableaux natifs. Les plus courantes incluent .get() et .toArray()
<🎜. >Convertir les objets json en tableau natifCette situation est un peu plus compliquée, car l'objet json n'est pas un "objet de type tableau", nous avons donc besoin d'une conversionRappelez-vous les plusieurs " des objets de type tableau" dont nous avons déjà parlé ? Ils peuvent tous obtenir la longueur via .length et sont accessibles via un index d'indice, tel que : fakeArr.length, fakeArr[0] Pouvons-nous donc le modifier en laissant json prendre en charge de cette façon ? -comme un objet" ?Concevez-le d'abord :
Pour que json prenne en charge fakeArr.length, c'est simple. Il vous suffit de définir une paire clé-valeur avec la clé comme longueur<. 🎜>Il semble que la prise en charge de l'accès aux indices puisse également être résolue facilement. De plus, utilisez simplement des nombres comme clés pour les paires clé-valeur~
Ensuite, essayez-le :L'avez-vous vu ? Succès! Le realArray ici est déjà le tableau natif de js, vous pouvez donc utiliser des méthodes natives telles que reverse()
var fakeArray = {0: "张三", 1: "李四", 2:"朱六", length:3}; var realArray = $.makeArray(fakeArray); console.log(fakeArray) console.log(realArray) realArray.reverse(); console.log(realArray);
, la longueur est très importante pendant le processus de conversion, et cette longueur est déterminée La longueur du tableau convertiSi la longueur dans l'exemple ci-dessus est spécifiée comme 2, alors le tableau converti n'a que les 2 premiers éléments, c'est-à-dire ["Zhang San", "李思"]
Si la longueur dans l'exemple ci-dessus est spécifiée comme 4, alors le tableau converti ne sera pas le tableau que nous voulons, mais un tableau similaire à new Array().push(fakeArray)
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!