Reputation: 568
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
Upvotes: 4
Views: 3535
Reputation: 917
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>");
});
Upvotes: 0
Reputation: 15042
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]);
Upvotes: 0
Reputation: 69905
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-- + ". </td><td>" + lol + "</td><tr>");
});
Working demo
Upvotes: 1
Reputation: 95027
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.
Upvotes: 1
Reputation: 17553
Create a copy of the array and then reverse that one. Here's a working example: http://jsfiddle.net/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);
Upvotes: 9
Reputation: 81926
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>")
})
Upvotes: 2
Reputation: 174957
$.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()
.
Upvotes: 2