JSON问题

时间:2010-08-25 06:20:00

标签: jquery json sorting google-chrome opera

var obj = {
'51' : { 'name':'name1'},     
'66' : { 'name':'name2'},     
'58' : { 'name':'name3'}
};
$(function() {
    s = '';
    $.each(obj, function(k, v) {
        s += ' '+k;
    });
    alert(s);
});

在IE和Firefox中它是51 66 58,但在Opera和Chrome中它是51 58 66 为什么Jquery.each()在opera,chrome中按键排序? 我该怎么做才能保持原生秩序?

p.s如果数组键是一个字符串,结果为51j 66j 58j 也许opera和chrome尝试将键转换为可能的整数

var obj = {
"51j" : { "name":"name1"},    
"66j" : { "name":"name2"},    
"58j" : { "name":"name3"}
};

1 个答案:

答案 0 :(得分:9)

JavaScript对象是无序的。当你遍历它们时,不能保证密钥应该出现在哪个顺序上,JS引擎可以自由地实现他们喜欢的任何存储和检索系统。

如果订单很重要,请使用数组:[]

这可以包含对象:

[
    { 'foo' : '1234', 'bar' : '5678' },
    { 'foo' : 'abcd', 'bar' : 'qwer' },
    { 'foo' : 'ldng', 'bar' : 'plma' }
]