introduire
Mode itérateur: fournit une méthode pour commander des éléments individuels dans un objet agrégé sans exposer la représentation interne de l'objet.
Plusieurs caractéristiques des itérateurs sont:
1. Accédez au contenu d'un objet agrégé sans exposer sa représentation interne.
2. Fournir une interface unifiée pour traverser différentes structures de collecte, prenant ainsi en charge le même algorithme pour fonctionner sur différentes structures de collecte.
3. Modification de la structure de collecte où l'itérateur est situé pendant la traversée peut causer des problèmes (par exemple, l'article n'est pas autorisé à être modifié dans le foreach en C #).
texte
Dans l'itération générale, nous devons avoir au moins 2 méthodes, Hasnext () et Next (), afin que nous puissions traverser tous les objets. Donnons d'abord un exemple:
La copie de code est la suivante:
var agg = (function () {
var index = 0,
données = [1, 2, 3, 4, 5],
longueur = data.length;
retour {
Suivant: fonction () {
élément var;
if (! this.hasnext ()) {
retourner null;
}
element = data [index];
index = index + 2;
élément de retour;
},
hasnext: function () {
Index de retour <la longueur;
},
Rewind: function () {
index = 0;
},
courant: fonction () {
return data [index];
}
};
} ());
La méthode d'utilisation est la même que dans C #:
La copie de code est la suivante:
// Le résultat de l'itération est: 1, 3, 5
while (agg.hasnext ()) {
console.log (agg.next ());
}
Bien sûr, vous pouvez également réinitialiser les données grâce à des méthodes supplémentaires, puis poursuivre d'autres opérations:
La copie de code est la suivante:
// Réinitialiser
agg.rewind ();
console.log (agg.current ()); // 1
Exemple d'application jQuery
Un itérateur très célèbre en jQuery est la méthode $. Grâce à chacun, nous pouvons passer dans une fonction supplémentaire, puis itérer sur tous les éléments, par exemple:
La copie de code est la suivante:
$ .each (['Dudu', 'Dudu', 'Yogurt Little Girl', 'That Mm'], fonction (index, valeur) {
console.log (index + ':' + valeur);
});
//ou
$ ('li'). Chaque (fonction (index) {
console.log (index + ':' + $ (this) .text ());
});
Résumer
Le scénario d'utilisation d'Itérator est: les résultats de l'ensemble varient souvent de différentes manières. Nous ne voulons pas exposer sa structure interne, mais nous avons également laissé le code client accéder de manière transparente aux éléments. Dans ce cas, nous pouvons utiliser le mode itérateur.