Обратный вывод $ .each в jQuery - PullRequest
       16

Обратный вывод $ .each в jQuery

4 голосов
/ 16 декабря 2011

Я делаю маленький секретный инструмент. Вывод будет в таблице, а слева я хотел бы перечислить числа, которые я сохранил в $.each(). Итак, вот мой код:

$.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>");

});

Для этого выводится следующее:

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

Я пытаюсь изменить это значение l, но оставить все остальное в покое, чтобы вывод выглядел следующим образом:

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

Ответы [ 7 ]

9 голосов
/ 16 декабря 2011

Создайте копию массива, а затем измените ее. Вот рабочий пример: http://jsfiddle.net/naRKF/

И код (HTML не совпадает с вашим, но вы должны сосредоточиться на / использовать технику JS):

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);
2 голосов
/ 16 декабря 2011
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>")
})
2 голосов
/ 16 декабря 2011

$.each() всегда будет повторять массив в правильном порядке.Вы хотите использовать for цикл для этого, а не jQuery $.each().

1 голос
/ 16 декабря 2011

Вот, пожалуйста,

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

});

Рабочая демо

1 голос
/ 16 декабря 2011

Попробуйте это:

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

По сути, так как вы используете собственный массив, вы можете просто повернуть его в обратном направлении.

0 голосов
/ 16 декабря 2011

Что-то вроде этого должно помочь:

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]);
0 голосов
/ 16 декабря 2011
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>");
});
...