jquery - JSON 的问题

标签 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()在o​​pera、chrome中按键排序? 我该怎么做才能保持原生顺序?

p.s 如果数组键是字符串,结果为 51j 66j 58j 也许 Opera 和 chrome 会尝试在可能的情况下将键转换为整数

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

最佳答案

JavaScript 对象是无序的。当您循环遍历键时,无法保证键应该按哪个顺序出现,并且 JS 引擎可以自由地实现它们喜欢的任何存储和检索系统。

如果顺序很重要,请使用数组:[]

这可以包含对象:

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

关于jquery - JSON 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563296/

相关文章:

c - 在c中对数组进行排序

jquery - 全日历日双击回调

javascript - 为什么不使用操作我的表单仍然将数据存储到数据库中

javascript - JQuery 溢出 Div,动画移动

javascript, jQuery - 检查数组中是否存在值

Elm 0.18 中的 JSON 解码器

javascript - 命令提示符中的 json

android - Android中的ArrayList排序问题

php - Ajax 发送第一个空白数据

algorithm - Scala 代码冒泡排序 for 循环