$.shop.iterator Принято

1

Чтоб итератор переходил в начало списка в функции reset индекс надо приравнять -1. В таком случае next работает правильно. При нуле не работает.

iterator: function (collection, with_key) {
            var isArr = $.isArray(collection);
            var len = isArr ? collection.length : $.shop.helper.size(collection);
            var keys = [];
            var idx = -1;
            for (var k in collection) {
                if (collection.hasOwnProperty(k)) {
                    keys.push(k);
                }
            }
            return {

                next: function () {
                    idx++;
                    var k = idx;
                    if (k >= len) {
                        return null;
                    }

                    if (!isArr) {
                        k = keys[k];
                    }
                    return with_key ? [k, collection[k]] : collection[k];
                },

                len: function() {
                    return len;
                },

                key: function() {
                    k = idx;
                    if (!isArr) {
                        k = keys[k];
                    }
                    return k;
                },

                isFirst: function () {
                    return idx <= 0;
                },

                isLast: function () {
                    return idx >= len - 1;
                },

                reset: function () {
//idx=0;                    
idx = -1;
                }
            }
        }

0 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите