.each循环遍历对象

时间:2013-08-10 21:12:15

标签: javascript jquery

我已经创建了一个我试图循环的对象,但.each()函数试图首先对对象进行排序,然后循环遍历它,从而产生不良结果。我正在使用Chrome,顺便说一下,我听说过对象循环可能与浏览器相关。

对象:

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

我使用每个函数

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

我希望输出为12:00 1:00 2:00,即我为对象提供的顺序。我没有太多的余地来改变对象键,所以如果可以的话,我想保留它们。

这是JSFiddle:http://jsfiddle.net/hyc8U/

谢谢!

PS。我不确定.each()的这种行为在技术上是“按顺序”还是“乱序”

3 个答案:

答案 0 :(得分:6)

javascript对象的正常行为已订购。您将丢失所提供订单的所有信息。

如果您需要特定订单,可以使用数组,或者获取对象的键并按用户定义的函数对它们进行排序。

答案 1 :(得分:3)

对象键在Javascript中是无序的。您需要将对象转换为如下所示的数组:

    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

答案 2 :(得分:2)

看起来插入顺序不是任意的,或者只是意外?否则,您可以获取密钥并对它们进行排序,并按排序的密钥数组顺序访问该对象:

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/