如何按照编写的顺序迭代javascript对象属性

Eug*_*ica 14 javascript

我发现我的代码中存在一个错误,希望通过最少的重构努力来解决.Chrome和Opera浏览器中会出现此错误.问题:

var obj = {23:"AA",12:"BB"};
//iterating through obj's properties
for(i in obj)
  document.write("Key: "+i +" "+"Value: "+obj[i]);
Run Code Online (Sandbox Code Playgroud)

输出FF,IE键:23值:AA键:12值:BB

Opera和Chrome输出(错误)
键:12值BB
键:23值AA

我试图制作一个像这样的逆序对象

var obj1={"AA":23,"BB":12};
for(i in obj1)
  document.write("Key: "+obj[i] +" "+"Value: "+i);
Run Code Online (Sandbox Code Playgroud)

但是输出是一样的.有没有办法通过小改动为所有浏览器提供相同的行为?

bob*_*nce 20

不,JavaScript对象属性没有固有的顺序.总运气是什么顺序for...in循环运作.

如果你想订购,你将不得不使用一个数组:

var map= [[23, 'AA'], [12, 'BB']];
for (var i= 0; i<map.length; i++)
    document.write('Key '+map[i][0]+', value: '+map[i][1]);
Run Code Online (Sandbox Code Playgroud)

  • 当程序员在没有深入理解他正在写什么的情况下写作时,就会发生这种情况. (3认同)