


Explication détaillée de la raison pour laquelle la méthode de traversée est préférée au code de boucle en JavaScript
Priorisez l'utilisation de méthodes de parcours plutôt que de boucles
Lors de l'utilisation de boucles, il est facile de violer le principe DRY (Don't Repeat Yourself). En effet, nous choisissons généralement la méthode copier-coller pour éviter d’écrire à la main des paragraphes de déclarations circulaires. Mais cela entraînera de nombreuses duplications de code dans le code, et les développeurs « réinventeront la roue » sans aucun sens. Plus important encore, il est facile de négliger les détails de la boucle lors du copier-coller, tels que la valeur de l'index de départ, la condition de fin, etc.
Par exemple, la boucle for suivante a ce problème, en supposant que n est la longueur de l'objet de collection :
for (var i = 0; i <= n; i++) { ... } // 终止条件错误,应该是i < n for (var i = 1; i < n; i++) { ... } // 起始变量错误,应该是i = 0 for (var i = n; i >= 0; i--) { ... } // 起始变量错误,应该是i = n - 1 for (var i = n - 1; i > 0; i--) { ... } // 终止条件错误,应该是i >= 0
On peut le voir dans quelques détails de la boucle Il est facile de se tromper. Grâce à la fermeture fournie par JavaScript (voir point 11), les détails de la boucle peuvent être encapsulés pour être réutilisés. En fait, ES5 propose quelques méthodes pour résoudre ce problème. Parmi eux, Array.prototype.forEach est le plus simple. En l'utilisant, nous pouvons écrire la boucle comme ceci :
// 使用for循环 for (var i = 0, n = players.length; i < n; i++) { players[i].score++; } // 使用forEach players.forEach(function(p) { p.score++; });
En plus de parcourir l'objet de collection, un autre modèle courant consiste à parcourir chaque élément de la collection d'origine. Effectuez certaines opérations sur les éléments, puis obtenez un nouvel ensemble. Nous pouvons également utiliser la méthode forEach pour implémenter ce qui suit :
// 使用for循环 var trimmed = []; for (var i = 0, n = input.length; i < n; i++) { trimmed.push(input[i].trim()); } // 使用forEach var trimmed = []; input.forEach(function(s) { trimmed.push(s.trim()); });
Cependant, en raison de cette méthode de. conversion d'un ensemble Le modèle de mappage d'une autre collection est très courant, et ES5 fournit également la méthode Array.prototype.map pour rendre le code plus simple et plus élégant :
var trimmed = input.map(function(s) { return s.trim(); });
De plus, il existe un modèle courant consistant à filtrer la collection selon certaines conditions, puis à obtenir un sous-ensemble de la collection originale. Array.prototype.filter est fourni dans ES5 pour implémenter ce modèle. Cette méthode accepte un Predicate comme paramètre, qui est une fonction qui renvoie true ou false : renvoyer true signifie que l'élément sera conservé dans la nouvelle collection ; renvoyer false signifie que l'élément n'apparaîtra pas dans la nouvelle collection. Par exemple, nous utilisons le code suivant pour filtrer les prix des produits et conserver uniquement les produits dont les prix se situent dans la plage [min, max] :
listings.filter(function(listing) { return listing.price >= min && listing.price <= max; });
Bien sûr, ce qui précède méthode Est disponible dans les environnements prenant en charge ES5. Dans d'autres environnements, nous avons deux options : 1. Utiliser des bibliothèques tierces, telles que le trait de soulignement ou lodash, qui fournissent un certain nombre de méthodes courantes pour gérer les objets et les collections. 2. Définissez-le selon vos besoins.
Par exemple, définissez la méthode suivante pour obtenir les éléments précédents de l'ensemble en fonction d'une certaine condition :
function takeWhile(a, pred) { var result = []; for (var i = 0, n = a.length; i < n; i++) { if (!pred(a[i], i)) { break; } result[i] = a[i]; } return result; } var prefix = takeWhile([1, 2, 4, 8, 16, 32], function(n) { return n < 10; }); // [1, 2, 4, 8]
Afin de mieux réutiliser cette méthode, nous pouvons la définir sur l'objet Array.prototype Pour des effets spécifiques, veuillez vous référer au point 42.
Array.prototype.takeWhile = function(pred) { var result = []; for (var i = 0, n = this.length; i < n; i++) { if (!pred(this[i], i)) { break; } result[i] = this[i]; } return result; }; var prefix = [1, 2, 4, 8, 16, 32].takeWhile(function(n) { return n < 10; }); // [1, 2, 4, 8]
Il n'y a qu'une seule situation dans laquelle utiliser une boucle est préférable à l'utilisation d'une fonction de traversée : lorsque vous devez utiliser break et continue. Par exemple, il y aura des problèmes lors de l'utilisation de forEach pour implémenter la méthode takeWhile ci-dessus. Comment doit-elle être implémentée lorsque le prédicat n'est pas satisfait ?
function takeWhile(a, pred) { var result = []; a.forEach(function(x, i) { if (!pred(x)) { // ? } result[i] = x; }); return result; }
On peut utiliser une exception interne pour porter le jugement, mais c'est aussi un peu maladroit et inefficace :
function takeWhile(a, pred) { var result = []; var earlyExit = {}; // unique value signaling loop break try { a.forEach(function(x, i) { if (!pred(x)) { throw earlyExit; } result[i] = x; }); } catch (e) { if (e !== earlyExit) { // only catch earlyExit throw e; } } return result; }
Mais après avoir utilisé forEach, le code est encore plus verbeux qu'avant de l'utiliser. C'est évidemment problématique. Pour ce problème, ES5 fournit toutes les méthodes pour gérer les boucles qui se terminent prématurément. Leur utilisation est la suivante :
[1, 10, 100].some(function(x) { return x > 5; }); // true [1, 10, 100].some(function(x) { return x < 0; }); // false [1, 2, 3, 4, 5].every(function(x) { return x > 0; }); // true [1, 2, 3, 4, 5].every(function(x) { return x < 3; }); // false
Les deux méthodes sont un court-circuit. méthode : tant qu'un élément renvoie true dans le prédicat de la méthode some, alors some retournera ; tant que n'importe quel élément renvoie false dans le prédicat de la méthode each, alors la méthode each renverra également false .
Par conséquent, takeWhile peut être implémenté comme suit :
function takeWhile(a, pred) { var result = []; a.every(function(x, i) { if (!pred(x)) { return false; // break } result[i] = x; return true; // continue }); return result; }
En fait, c'est l'idée de la programmation fonctionnelle. En programmation fonctionnelle, vous voyez rarement des boucles for ou while explicites. Les détails des boucles sont joliment encapsulés.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies en PHP et JS. Des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et de la technologie, le trading d'actions est devenu l'un des moyens importants pour de nombreux investisseurs. L'analyse boursière est une partie importante de la prise de décision des investisseurs, et les graphiques en bougies sont largement utilisés dans l'analyse technique. Apprendre à dessiner des graphiques en bougies à l'aide de PHP et JS fournira aux investisseurs des informations plus intuitives pour les aider à prendre de meilleures décisions. Un graphique en chandeliers est un graphique technique qui affiche les cours des actions sous forme de chandeliers. Il montre le cours de l'action

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Java est un langage de programmation populaire doté de puissantes capacités de gestion de fichiers. En Java, parcourir un dossier et obtenir tous les noms de fichiers est une opération courante, qui peut nous aider à localiser et traiter rapidement les fichiers dans un répertoire spécifique. Cet article explique comment implémenter une méthode permettant de parcourir un dossier et d'obtenir tous les noms de fichiers en Java, et fournit des exemples de code spécifiques. 1. Utilisez la méthode récursive pour parcourir le dossier. Nous pouvons utiliser la méthode récursive pour parcourir le dossier. La méthode récursive est un moyen de s'appeler, qui peut parcourir efficacement le dossier.

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service
