1. Une brève introduction aux files d'attente et aux piles
1.1. Concepts de base des files d'attente
Fitre: Il s'agit d'une collection qui prend en charge le premier entrée (FIFO), c'est-à-dire que les données insérées sont d'abord récupérées en premier!
Comme indiqué dans la figure ci-dessous:
1.2. Concepts de base de la pile
Stack: Il s'agit d'une collection qui prend en charge la dernière entrée (LIFO), c'est-à-dire que les données insérées plus tard sont récupérées en premier!
Comme indiqué dans la figure ci-dessous:
2. Implémentez les files d'attente et les piles en javascript
Dans JavaScript, les files d'attente et les tableaux sont principalement implémentés via des tableaux. Les méthodes suivantes sont fournies dans des tableaux JS pour nous permettre d'implémenter facilement les files d'attente et les piles:
• Shift: supprimez le premier élément du tableau et renvoyez la valeur de cet élément.
• Défense: ajoutez un ou plusieurs éléments au début du tableau et renvoyez une nouvelle longueur
• Poussez: ajoutez un élément à la fin du milieu et renvoyez la nouvelle longueur
• Pop: supprimez le dernier élément du tableau et renvoyez la valeur de cet élément.
2.1. Implémenter les files d'attente
<Script Type = "Text / Javascript"> // Créez un tableau pour simuler la file d'attente var a = new Array (); console.log (a); // déshift: ajoutez un ou plusieurs éléments au début du tableau et renvoyez la nouvelle longueur console.log ("Entrée"); a.unshift () console.log (a); // -----> a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); // - ---->, a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); // ----> ,, a.unshift (); console.log (a); // ----> ,,, console .log ("Exit, First in, First Out"); console.log (a); // pop: supprimer le dernier élément du tableau et renvoyer la valeur de cet élément a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); </ script>L'effet de sortie sur la console de navigateur Google est illustré dans la figure ci-dessous:
2.2. Implémentation de la pile
<script type = "text / javascript"> // Créez un tableau pour simuler la pile var a = new Array (); console.log (a); // push: ajoutez un ou plusieurs éléments à la fin du tableau et renvoyez la nouvelle longueur console.log ("pile"); a.push () console.log (a); // -----> a.push (); console.log (a); // ----->, a.push (); console.log (a); // ---- ->, a.push (); console.log (a); // ----->, a.push (); console.log (a); // ----> ,, a.push (); console.log (a); // ----> ,,, console.log (" Out la pile, premier out "); console.log (a); // pop: supprimez le dernier élément du tableau et renvoyez la valeur de cet élément a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); </ script>L'effet de sortie sur la console de navigateur Google est illustré dans la figure ci-dessous:
2.3. Test de performances de la méthode push et de la méthode de décalage
Les méthodes de poussée et de décalage du Array peuvent ajouter des éléments au tableau actuel. La différence est que la poussée est ajoutée à la fin, tandis que un décalage est ajouté au début. D'après le principe, nous pouvons savoir que l'efficacité de la désintégration est relativement faible. La raison en est que chaque fois qu'il ajoute un élément, il déplace l'élément existant en une position. Mais quelle est la différence d'efficacité? Passons un test simple ci-dessous.
<script type = "text / javascript"> / * l'explication de l'explication de l'astuce de "var s = + newDate ();" dans le code est le suivant: = + Cet opérateur n'existe pas; + équivaut à .valueof (); + new Date () est équivalent à une nouvelle date (). = []; var startTime = + new Date (); // + new Date () est équivalent à la nouvelle date (). ValueOf (), renvoyant les millisecondes du test de performance de l'heure actuelle // pour (var i =; i <; i ++) {arr.push (i); } var endtime = + new Date (); console.log ("Il faut du temps pour appeler la méthode push pour ajouter un élément au tableau" + (starttime de fin) + "MS"); startTime = + new Date (); arr = []; // Test de performance de décalage pour (var i =; i <; i ++) {arr.unshift (i); } endtime = + new Date (); console.log ("Il faut du temps pour appeler la méthode de décalage pour ajouter un élément au tableau" + (fin de starttime) + "ms"); </cript>Ce code effectue respectivement 100 000 opérations de poussée et de décalage et l'exécute une fois dans Google Browser. Le résultat est illustré dans la figure ci-dessous:
On peut voir que le décalage est environ 100 fois plus lent que Push! Par conséquent, vous devez utiliser la mise en prudence dans la vie quotidienne, en particulier pour les grandes tableaux. Si vous devez réaliser l'effet de la décalage, vous pouvez utiliser la méthode inverse de Array, qui peut inverser un tableau. Ajoutez d'abord les éléments à placer dans le tableau avec Push, puis exécutez à nouveau le revers pour réaliser l'effet de la décalage. Par exemple:
<script type = "text / javascript"> // Créez un tableau pour simuler la pile var a = new Array (); // Utilisez la méthode push pour ajouter des éléments a.push () a.push (); a.push (); a.push (); console.log ("l'ordre des éléments dans le tableau avant que le tableau ne soit inversé"); console.log (a); // - appelé inverse qui peut inverser un tableau. Ajoutez d'abord les éléments à mettre dans le tableau avec Push, puis effectuez à nouveau à l'envers, et l'effet de la désintégration est obtenu a.reverse (); // Utiliser la méthode inverse pour inverser la console du tableau.log ("L'ordre des éléments dans le tableau après l'inversion du tableau"); console.log (a); </script>L'effet de sortie sur la console de navigateur Google est illustré dans la figure ci-dessous:
À en juger par les résultats en cours d'exécution, l'ordre des éléments du tableau a été inversé.
2.4. Test de performance de la méthode inverse
Quelles sont les performances de la revers? Tessons à nouveau:
<script type = "text / javascript"> var arr = [], s = + nouvelle date; for (var i =; i <; i ++) {arr.push (i); } // Appelez la méthode inversée pour inverser l'ordre des éléments dans le tableau arr.reverse (); console.log ("Appelez la méthode inversée pour inverser l'ordre des éléments dans le tableau:" + (+ nouvelle date - s) + "msec"); </cript>L'effet de sortie sur la console de navigateur Google est illustré dans la figure ci-dessous:
À partir de l'effet de course, nous pouvons voir que la méthode inverse a des performances extrêmement élevées et peut être utilisée en toute confiance.
Ce qui précède est un résumé de la mise en œuvre des files d'attente et des piles via des tableaux en JavaScript, et j'ai simplement testé les avantages de performance et les inconvénients de la poussée, du désastre et de l'inverse dans les grandes tableaux.
Ce qui précède est la file d'attente et la pile dans la structure de données d'implémentation JavaScript Array introduite par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!