我已经创建了一个我试图循环的对象,但.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()的这种行为在技术上是“按顺序”还是“乱序”
答案 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>");
});