2013-08-10 3 views
1

루프를 통과시키려는 개체를 만들었지 만 .each() 함수는 먼저 개체를 정렬 한 다음 루프를 통해 바람직하지 않은 결과를 얻으려고합니다. Chrome을 사용하고 있는데, 객체 루핑이 브라우저 의존적 일 수 있다고 들었습니다. . 각 루프를 통해 개체가 잘못되었습니다.

목적 : 각 기능을 가진 개체를 통해

var myObject = {"000": "12:00", "100": "1:00", "200": "2:00" .. and so on } 

I 루프

$.each(myObject, function (key, value) { 
    // display value 
} // outputs 1:00 2:00 12:00 

내가 그것을 출력 12:00 1시 2시, 순서가되고 싶어요 나는 그 물건에 대해 제공했다. 객체 키를 변경하는 데 많은 여유가 없으므로 가능한 한 객체 키를 유지하고 싶습니다.

다음은 JSFiddle에게있다 : http://jsfiddle.net/hyc8U/

감사합니다!

추신. .each()의 이러한 동작이 기술적으로 "순서대로"또는 "순서가 맞지 않은 것"인지 확실하지 않습니다.

+2

개체 키되지 않은 주문 자바 스크립트에 있습니다. 이것은 jQuery의 각 언어가 사용하는 for [for ... in' 루프] (http://es5.github.io/#x12.6.4)의 언어 사양에 있습니다. 순서가 지정된 콜렉션에 배열을 사용하려면 –

답변

6

자바 스크립트 객체의 프로퍼티는이 아닌 입니다. 제공받은 주문의 모든 정보를 잃게됩니다.

특정 순서를 원할 경우 배열을 사용하거나 개체의 키를 가져 와서 사용자 정의 함수로 정렬 할 수 있습니다.

3

자바에서는 개체 키의 순서가 지정되지 않습니다. 당신은 다음과 같습니다 배열로 개체를 변환해야합니다 :

var myList = [{key: "000": val: "12:00"}, 
        {key: "100": val: "1:00"}, 
        {key: "200": val: "2:00"}, 
        // ... 
       ]; 

이 그럼 당신은 배열 (myList.sort(function(o) {return o.key;});를) 정렬 및 정렬 된 배열에 .each를 호출 할 수 있습니다.

0

삽입 순서가 임의적 인 것 같지 않거나 단지 사고 일뿐입니다. 그렇지 않으면 당신은 열쇠를 얻고으로 정렬하고 정렬 된 키 배열 순서로 개체에 액세스 할 수 있습니다 :

var myObject = {"000": "12:00", "100": "1:00", "200": "2:00"}; 
$.each(Object.keys(myObject).sort(), function(i, v){ 
    $("div").append(myObject[v] + "<br>"); 
}); 

http://jsfiddle.net/hyc8U/2/