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"}
};
最佳答案
JavaScript 对象是无序的。无法保证当您循环键时键应该以哪个顺序出现,并且 JS 引擎可以自由地实现他们喜欢的任何存储和检索系统。
如果顺序很重要,请使用数组:[]
这可以包含对象:
[
{ 'foo' : '1234', 'bar' : '5678' },
{ 'foo' : 'abcd', 'bar' : 'qwer' },
{ 'foo' : 'ldng', 'bar' : 'plma' }
]
关于jquery - JSON 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3563296/