Chrome按键对对象进行排序

时间:2011-05-29 09:23:50

标签: javascript sorting object google-chrome

  

可能重复:
  Chrome and probably Opera sort object properties automatically

我有一个非常简单的代码:

var obj = {3:'a',2:'b',1:'c'};
console.log(obj);

在Firefox 4.0.1中,它返回:

Object { 3="a", 2="b", 1="c"}

在Chrome 11.0.696.71中,它返回:

Object { 1="c", 2="b", 3="a"}

我如何强制Chrome不会对此对象进行排序?

2 个答案:

答案 0 :(得分:4)

对于对象,规范是不保留元素的顺序。换句话说,javascript不保证对象属性的任何特定顺序。

如果要保留元素的顺序,则必须使用数组。在这种情况下,您的对象可以重写为:

var arrobj = ['c','b','a'];

var arrobj = ['a','b','c'].reverse();

您考虑到第一个元素索引将为0(零)

答案 1 :(得分:3)

这是铬的已知“错误”/特征。即便是jQuery的作者也对此感到愤慨,但是铬家伙仍然不灵活,说这是一个“功能”: http://code.google.com/p/chromium/issues/detail?id=883 [1]

作为一种解决方法,使用数组或某种MixedCollection(如在extjs中)或类似的东西。

null !== true and also null !== false // in php and js it's so

[1]:John Resig(jeresig)是jquery的作者