当前位置:  开发笔记 > 编程语言 > 正文

Google Chrome:JavaScript关联数组,按顺序进行评估

如何解决《GoogleChrome:JavaScript关联数组,按顺序进行评估》经验,为你挑选了2个好方法。

好的,所以在网页上,我有一个JavaScript对象,我用它作为一个关联数组.当页面加载时,这在脚本块中静态存在:

var salesWeeks = {
    "200911" : ["11 / 2009", "Fiscal 2009"],
    "200910" : ["10 / 2009", "Fiscal 2009"],
    "200909" : ["09 / 2009", "Fiscal 2009"],
    "200908" : ["08 / 2009", "Fiscal 2009"],
    "200907" : ["07 / 2009", "Fiscal 2009"],
    "200906" : ["06 / 2009", "Fiscal 2009"],
    "200905" : ["05 / 2009", "Fiscal 2009"],
    "200904" : ["04 / 2009", "Fiscal 2009"],
    "200903" : ["03 / 2009", "Fiscal 2009"],
    "200902" : ["02 / 2009", "Fiscal 2009"],
    "200901" : ["01 / 2009", "Fiscal 2009"],
    "200852" : ["52 / 2008", "Fiscal 2009"],
    "200851" : ["51 / 2008", "Fiscal 2009"]
};

键/值对的顺序是有意的,因为我将对象转换为HTML选择框,如下所示:


...代码看起来像这样(从函数中剪断):

var arr = [];
arr.push(
    "















注意:此订单虽然很奇怪,但在后续刷新时不会改变.它始终按此顺序排列.

那么,Chrome在做什么?它如何处理循环的一些优化?

首先,我依赖于在任何关联数组中声明键/值对的顺序是错误的吗?

我之前从未质疑它,我只是假设订单会持续,因为这种技术在其他浏览器中一直对我有效.但我想我从来没有看到它说明订单得到保证.也许不是吗?

任何见解都会很棒.谢谢.



1> Barry Brown..:

将关联数组视为纸袋,所有键值对都放在纸袋中.当你把手伸进麻袋里看看对子(比如for ... in循环),你遇到它们的顺序是出于所有实际目的而随机的.

如果要按特定顺序查看它们,则需要将密钥提取到数组中并对其进行排序.然后遍历数组,使用您遇到的键索引到关联数组.


Chrome是正确的; 实际规格说订单不会保留.
我想知道如果我们不能依赖插入顺序,他们希望我们如何订购列表.我可以看到按ID排序的位置更有效(二进制搜索).但是我仍然需要按名称排序的用户ID列表!
除chrome之外的所有浏览器都按插入顺序进行属性迭代,因此您应该在chrome/v8上提交错误而不执行此操作.

2> moonshadow..:

不保证元素存储在关联数组中的顺序.您必须明确地对输出进行排序.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有