JSON 的问题

发布于 2024-09-16 11:54:54 字数 553 浏览 2 评论 0原文

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中按键排序? 我可以做什么来保持原生秩序?

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

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

In IE and Firefox it's 51 66 58, but in Opera and Chrome it's 51 58 66
Why Jquery.each() sort by key in opera, chrome?
What can i do to keep native order?

p.s if array keys is a string, result 51j 66j 58j
perhaps opera and chrome try to convert keys to integer where it's possible

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剪不断理还乱 2024-09-23 11:54:54

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

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

它可以包含对象:

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

JavaScript objects are unordered. There is no guarantee about which order the keys should come out when you loop over them and JS engines are free to implement whatever storage and retrieval systems they like.

If order matters, use an array: []

This can contain objects:

[
    { 'foo' : '1234', 'bar' : '5678' },
    { 'foo' : 'abcd', 'bar' : 'qwer' },
    { 'foo' : 'ldng', 'bar' : 'plma' }
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文