Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
150 views
in Technique[技术] by (71.8m points)

javascript - JQuery alternative to classic for-loop if not collection

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

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

1 Reply

0 votes
by (71.8m points)

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...