Maison > Article > interface Web > Comment implémenter un modèle d'itérateur JavaScript et explication détaillée des exemples d'utilisation
Le modèle d'itérateur fait référence à la fourniture d'une méthode permettant d'accéder séquentiellement aux éléments individuels d'un objet agrégé sans exposer la représentation interne de l'objet.
1. Itérateurs dans jQuery
$.each([1, 2, 3], function(i, n) { console.log("当前下标为:"+ i + " 当前元素为:"+ n ); });
2. 🎜>
var each = function(ary, callback) { for(var i = 0, l = ary.length; i < l; i++) { callback.call(ary[i], i, ary[i]); } }; each([1, 2, 3], function(i, n) { console.log("当前下标为:"+ i + " 当前元素为:"+ n ); });
[1, 2, 3].forEach(function(n, i, curAry){ console.log("当前下标为:"+ i + " 当前元素为:"+ n + " 当前数组为:" + curAry); })
3. Itérateur interne, itérateur externe
(1) Itérateur interne : Les règles d'itération ont été définies, il reprend entièrement tout le processus d'itération, et ne nécessite qu'un premier appel de l'extérieur. La coutume ci-dessus est chacune un itérateur interne ! (2) Itérateur externe : L'itération de l'élément suivant doit être demandée explicitement.
Exemple : Déterminer si deux tableaux sont égaux
// 内部迭代器 var each = function(ary, callback) { for(var i = 0, l = ary.length; i < l; i++) { callback.call(ary[i], i, ary[i]); } }; // 比较函数 var compareAry = function(ary1, ary2) { if(ary1.length != ary2.length) { throw new Error("不相等"); // return console.log("不相等"); } // 且住 each(ary1, function(i, n) { if(n !== ary2[i]) { // return console.log("不相等"); // return 只能返回到each方法外,后续console.log("相等")会继续执行,所以这里得使用throw throw new Error("不相等"); } }); console.log("相等"); } compareAry([1, 2, 3], [1, 2, 4]);Exemple 2 : Itérateur externe
// 外部迭代器 var Iterator = function(obj) { var current = 0, next = function() { current++; }, isDone = function() { return current >= obj.length; }, getCurrentItem = function() { return obj[current]; }; return { next: next, isDone: isDone, getCurrentItem: getCurrentItem }; }; // 比较函数 var compareAry = function(iterator1, iterator2) { while( !iterator1.isDone() && !iterator2.isDone() ){ if(iterator1.getCurrentItem() !== iterator2.getCurrentItem()) { throw new Error("不相等"); } iterator1.next(); iterator2.next(); } console.log("相等"); } compareAry(new Iterator([1, 2, 3]), new Iterator([1, 2, 4]));
4. Itérateur de fin
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!