Чтоб итератор переходил в начало списка в функции 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 комментариев