这个Javascript数组的正确排序是什么?

时间:2011-10-03 20:19:15

标签: javascript

在Firefox中,输出按字母顺序排序(这是它们声明的顺序)。在IE和Chrome中它们是数字的。所有最新版本。

哪个是对的?

<html>
<head></head>
<body>
<script type="text/javascript">
function makeArray()
{
    var array = [{5:'Five',4:'Four',1:'One',3:'Three',2:'Two'}];
    var msg = '';

    for (var val in array[0])
    {
        msg = msg + val;
    }   
    alert(msg);
}
</script>
<input type="button" onClick="makeArray();" value="Press Me" />
</body>
</html>

回归故事...... 在SpiraTeam(我们当前的错误跟踪系统)中,许多列表(用户,模块等)使用与上述类似的格式进行排序。除非你使用FireFox,否则这会使查找内容变得非常困难和烦人。我的兴趣纯粹是学术性的,我只是问,因为我想知道哪个浏览器是正确的。

2 个答案:

答案 0 :(得分:5)

实际上你问: 使用for循环进行迭代时,对象文字中属性的顺序是什么? 这里的数组无关紧要。

答案是:未指明。大部分时间它与您在代码中看到的相同,但不能保证。

这个问题已被问过数百次:

答案 1 :(得分:1)

你的问题似乎是你没有迭代一个数组,而是一个对象......

ECMA似乎没有在步骤5中定义如何进行此操作...(按字母顺序,数字等)