最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Reverse $.each output in jQuery - Stack Overflow

programmeradmin4浏览0评论

I'm making a little secret tool. The output will be in a table, and on the left-hand side I'd like to list the numbers I have stored in $.each(). So here's my code:

$.each([1,2,3,4,5], function(i, l){


   var lol = (some math stuff here);

   $("#output").append("<tr><td>" + l + "</td><td>" + lol + "</td><tr>");

});

What this does is output the following:

1.  lol1
2.  lol2
3.  lol3
4.  lol4
5.  lol5

What I'm trying to do is reverse that l value but leave everything else alone so that the output instead looks like this:

5. lol1
4. lol2
3. lol3
2. lol4
1. lol5

I'm making a little secret tool. The output will be in a table, and on the left-hand side I'd like to list the numbers I have stored in $.each(). So here's my code:

$.each([1,2,3,4,5], function(i, l){


   var lol = (some math stuff here);

   $("#output").append("<tr><td>" + l + "</td><td>" + lol + "</td><tr>");

});

What this does is output the following:

1.  lol1
2.  lol2
3.  lol3
4.  lol4
5.  lol5

What I'm trying to do is reverse that l value but leave everything else alone so that the output instead looks like this:

5. lol1
4. lol2
3. lol3
2. lol4
1. lol5
Share Improve this question asked Dec 16, 2011 at 15:33 ggwiczggwicz 5681 gold badge6 silver badges20 bronze badges
Add a ment  | 

7 Answers 7

Reset to default 9

Create a copy of the array and then reverse that one. Here's a working example: http://jsfiddle/naRKF/

And the code (the HTML isn't the same as yours, but the JS technique is what you should focus on/use):

var arr1 = [1,2,3,4,5];
var arr2 = arr1.slice().reverse(); //creates a copy and reverses it

var html = '';
for(var i = 0; i < arr1.length; i++){
    html += '<div>' + arr2[i] + '.' + ' lol' + arr1[i] + '</div>';
}

$('body').append(html);

$.each() will always iterate the array in the correct order. You want to use a for loop for this one, rather then jQuery's $.each().

x = [1,2,3,4,5]
$.each(x.reverse(), function(i, l){
    var lol = (some math stuff here)
    $("#output").append("<tr><td>" + l + "</td><td>" + lol + "</td><tr>")
})

Try this:

$.each([1,2,3,4,5].reverse(),function(i,l){...

Basically since you are using a native array, you can simply reverse it to go in the opposite direction.

Here you go

var arr = [1,2,3,4,5];
var counter = arr.length
$.each(arr, function(i, l){

   var lol = "lol"+l;

   $("#output").append("<tr><td>" + counter-- + ".&nbsp;&nbsp;</td><td>" + lol + "</td><tr>");

});

Working demo

Soemthing like this should help:

function test(arr) {
    if ($.isArray(arr)) {
        var reverse = arr.slice().reverse();
        $(arr).each(function(i) {
            console.log(reverse[i] + ". lol" + this);
        });
    }
}

test([1, 2, 3, 4, 5]);
var a=[1,2,3,4,5]
$.each(a, function(i, l){
   var lol = (some math stuff here);
   $("#output").append("<tr><td>" + a[a.length-i] + "</td><td>" + lol + "</td><tr>");
});
发布评论

评论列表(0)

  1. 暂无评论