Dans JavaScript, les tableaux peuvent être créés à l'aide du constructeur du tableau, ou rapidement créés à l'aide de [], qui est également la méthode préférée. Le tableau est un prototype hérité de l'objet, et il n'a pas de valeur de retour spéciale pour le typeof, il renvoie uniquement «objet».
1. Méthode Array.prototype.slice
La méthode de tranche d'un tableau est généralement utilisée pour extraire les fragments d'un tableau. Cependant, il a également la capacité de convertir des "tableaux de classe" (tels que les arguments et HTMLCollection) en tableaux réels.
La copie de code est la suivante:
var nœudsarr = array.prototype.slice.call (document.forms);
var argsarr = array.prototype.slice.call (arguments);
J'étais curieux de savoir pourquoi la méthode des tableaux de tranche a une telle compétence, et comment est-elle implémentée dans le moteur JavaScript? La méthode fraternelle de Slice a-t-elle de telles compétences?
Avec Curiosity, téléchargez le code source du moteur JavaScript V8 de Google dans la zone locale. L'adresse de téléchargement du code source V8 est: https://github.com/v8/v8.
Trouver "array.prototype.slice" dans v8-master / src / array.js:
La copie de code est la suivante:
Fonction Arrayslice (start, end) {
Check_object_coerble (this, "array.prototype.slice");
...
var result = []; // Cette phrase est la clé
if (end_i <start_i) Retour Result;
if (useSparsevariant (array, len, is_array (array), end_i - start_i)) {
...
Sparseslice (array, start_i, end_i - start_i, len, résultat);
} autre {
Simpleslice (array, start_i, end_i - start_i, len, result);
}
...
Résultat de retour;
Ensuite, je suppose que la méthode Simpleslice qui appelle "tableau de classe" doit être utilisée, puis rechercher "Simpleslice" dans le code source et a constaté que la méthode Simpleslice est également appelée le code source de l'array.prototype.splice, et la variable de résultat est également initialisée vers un tableau vide. Cependant, si vous souhaitez utiliser la méthode d'épissage pour convertir "Array Class" en un tableau réel, vous devez passer le paramètre de position de départ à 0, c'est-à-dire:
La copie de code est la suivante:
var nœudsarr = array.prototype.splice.call (document.forms, 0);
Parce que son principe de mise en œuvre est de former un nouveau tableau par des éléments de tableau supprimés. Si vous êtes intéressé, vous pouvez vérifier l'implémentation du code source de Array.prototype.splice.
De plus, Slice peut également cloner un tableau:
La copie de code est la suivante:
var arr = [1, 2, 3];
var clonEarr = arr.slice (); // CLONEARR: [1, 2, 3]
2. Méthode array.prototype.push
Utilisez la méthode push pour fusionner les tableaux:
La copie de code est la suivante:
var arr1 = [1, 'str', {name: 'lang'}];
var arr2 = [2, 'ing'];
Array.prototype.push.apply (Arr1, Arr2);
// Retour Résultat: [1, "str", {nom: 'lang'}, 2, "ing"]
3. Méthode Array.prototype.Sort
Téléchargez d'abord le code:
La copie de code est la suivante:
var arr = ['1', '2', '10', '12'];
arr.sort ();
// Résultat de retour: ["1", "10", "12", "2"]
Les résultats ci-dessus ne sont généralement pas ce que nous voulons, alors comment trier par taille numérique:
La copie de code est la suivante:
arr.sort (fonction (a, b) {
retourner a - b;
})
// Résultat de retour: ["1", "2", "10", "12"]
Avec la fonction de comparateur de tri, vous pouvez personnaliser de nombreux comparateurs pour obtenir un tri personnalisé.
4. Attribut de longueur
L'attribut de longueur d'un tableau n'est pas en lecture seule, ce qui signifie qu'il peut être écrit. Par exemple, utilisez l'attribut de longueur pour tronquer le tableau:
La copie de code est la suivante:
var arr = [1, 2, 3, 4];
arr.length = 2;
// arr: [1, 2]
arr.length = 0;
// arr: []
Dans le même temps, si l'attribut de longueur est augmenté, la valeur de longueur du tableau augmentera et non défini est utilisé comme nouvel élément à remplir.
La copie de code est la suivante:
var arr = [];
arr.length = 3;
// arr: [non défini, non défini, non défini]
D'accord, terminons cette journée. C'est déjà tôt le matin. Si vous avez de nouvelles découvertes à l'avenir, vous l'ajoutrez ici.
Avant, je n'avais pas l'habitude d'écrire des blogs, mais je n'avais l'habitude de mettre mon résumé habituel dans les notes de Youdaoyun. Je ne m'attendais pas à ce que l'on pense à l'écriture de mes opinions, car je devais réfléchir à la façon de l'exprimer afin que les autres puissent mieux le comprendre.
Si vous avez une mauvaise expression ou une mauvaise compréhension, j'espère que tout le monde pourra vous aider à me corriger.
Également joint certaines méthodes de tableau JavaScript couramment utilisées
CONCAT () Concatenne deux tableaux ou plus et renvoie le résultat.
join () met tous les éléments du tableau dans une chaîne. Les éléments sont séparés par des délimiteurs spécifiés.
pop () supprime et renvoie le dernier élément du tableau
push () ajoute un ou plusieurs éléments à la fin du tableau et renvoie la nouvelle longueur.
reverse () reverse () inverse l'ordre des éléments dans le tableau.
shift () supprime et renvoie le premier élément du tableau
Slice () renvoie l'élément sélectionné à partir d'un tableau existant
Trie () Trie les éléments du tableau
Splice () supprime l'élément et ajoute de nouveaux éléments au tableau.
tosource () renvoie le code source de l'objet
ToString () convertit le tableau en une chaîne et renvoie le résultat.
Tolocalestring () convertit le tableau en un tableau local et renvoie le résultat.
Unshift () ajoute un ou plusieurs éléments au début du tableau et renvoie une nouvelle longueur.
ValueOf () Renvoie la valeur d'origine de l'objet de tableau