我需要获得简单的javascript abject的真实顺序,但是我从这段代码得到了错误的答案:
var Obj={"x":"z", "2":"a", "1":"b"};
for(i in Obj)
document.write(Obj[i]+"<br>");
我希望看到z
,a
,b
作为答案,但我得到b
,a
,z
>
查看实际代码:
http://jsfiddle.net/gpP7m/
答案 0 :(得分:6)
There's no guaranteed order in object keys iteration
for ... in循环迭代一个对象的属性 任意顺序
如果需要,请使用键/值元素数组:
var obj=[
{key:"x", value:"z"},
{key:"2", value:"a"}
];
for (var i=0; i<obj.length; i++) document.write(obj[i].value+'<br>');
在现代浏览器(不是IE8)上,你可以这样做:
document.write(obj.map(function(kv){ return kv.value }).join('<br>'));
(这不完全相同,但可能做你想要的)
答案 1 :(得分:0)
检查以下样本
var data1 = {"x":"z", "2":"a", "1":"b"};
var arr = [];
var i=0;
$.each(data1,function(index,value) {
arr[i++] = value;
});
var len = arr.length-1;
while( len>=0 ) {
if( arr[len] !== undefined ) {
alert(arr[len]);
}
len--;
}