javascript:按实际顺序获取对象项

时间:2013-12-05 09:03:58

标签: javascript object

我需要获得简单的javascript abject的真实顺序,但是我从这段代码得到了错误的答案:

var Obj={"x":"z", "2":"a", "1":"b"};
for(i in Obj)
    document.write(Obj[i]+"<br>");

我希望看到zab作为答案,但我得到baz 查看实际代码: http://jsfiddle.net/gpP7m/

2 个答案:

答案 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--; 
}

,参考链接为Reverse object in jQuery.each

并且更新http://jsfiddle.net/gpP7m/3/