2011-12-16 3 views
4

나는 약간의 비밀 도구를 만들고 있습니다. 출력은 테이블에 있고 왼쪽에는 $.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 

답변

9

배열 복사본을 만든 다음 그 반대의 작업을 수행하십시오. 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); 
+0

DUDE. 완벽하게 작동합니다. 정말 감사. 나는 전에'for (i = 0 ...) '작업을 시도해 보았고 작동시키지 못했습니다. 정말 고마워! – ggwicz

+0

가치있는 일이라면 jQuery의 $ .each() 루프보다 표준 루프가 빠를 가능성이 높습니다. $ .each()는 실제로 존재하기 때문에 배열의 항목과 달리 객체의 속성을 쉽게 반복 할 수 있습니다. 그리고 또 다른 한가지 : arr2 = arr1은 배열 복사본을 생성하지 않는다는 것을 알아 두십시오. 동일한 배열을 참조하는 두 개의 개별 변수를 만듭니다. 그래서 만약 당신이 할 일은 arr2 = arr1; arr2.reverse() - 실제로 동일하기 때문에 실제로 arr1을 뒤집을 수도 있습니다. arr1.slice()는 실제로 사본을 만드는 트릭입니다. – maxedison

2

$.each() 항상 올바른 순서로 배열을 반복합니다. 이 경우 루프 대신 for 루프를 사용하고 jQuery는 $.each()을 사용합니다.

+0

감사합니다, 나는 전에 for''사용하여 시도와 나는 '나오지 않았어 그것을 바로 얻으십시오. maxedison의 대답이이 문제를 해결했습니다. 기여 해줘서 고마워! – ggwicz

2
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>") 
}) 
+0

이것은 출력을 되 돌리지 만 그가 원하는 것처럼 넘버링을 반전하지 않습니다. lol2는 2이지만 4이어야합니다. http://jsfiddle.net/EEuN8/ – mrtsherman

+0

흠. 이것은 작동하지 않았지만 어레이를 별도의 변수로 저장하는 것은 좋은 방법이며 maxedison의 대답으로 저를 위해 일해 왔습니다. 도와 줘서 고마워! – ggwicz

1

을 :

을 여기에 작업 예제
$.each([1,2,3,4,5].reverse(),function(i,l){... 

기본적으로 네이티브 배열을 사용하고 있으므로 반대 방향으로 가기 만하면됩니다. 여기

+0

이것은 작동하지 않았지만 기여에 감사드립니다! 감사. – ggwicz

1

당신이

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

}); 

이 같은 demo

0
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

Soemthing가 도움이 근무 이동 :

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