Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

If I want to loop over something that is not a collection I may use a for-loop in JavaScript. So to alert day numbers 0-9:

var days = 10;
for(var i = 0; i < days; i++)
   alert(i);

But what would be the JQuery way of doing such a for-loop (assuming I can't use $each, as it's not a collection)?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
148 views
Welcome To Ask or Share your Answers For Others

1 Answer

It is bad, but... $.each way:

var days = 10;
$.each(new Array(days), function(i, _) {
    alert(i);
});

for keyword way:

(function(iter) {
    for (var i = 0; i < days; ++i) {
        iter(i);
    }
})(function(i) {
    alert(i);
});

Custom jQuery plugin $.loop way:

;(function($) {
    $.loop = function(num, iter) {
        for (var i = 0; i < num; ++i) {
            iter(i);
        }
    };
})(jQuery);

Usage of $.loop in your case:

var days = 10;
$.loop(days, function(i) {
    alert(i);
});

Performance test says that $.each is slower than other, but for solving 99% of problems it is no matter.

Single-line way in your case is:

$.loop(days, alert);

Or:

$.each(new Array(days), alert);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...