【问题标题】:JavaScript for..in statement give unexpected results in IE8 [duplicate]JavaScript for..in 语句在 IE8 中给出了意想不到的结果 [重复]
【发布时间】:2015-02-07 03:12:24
【问题描述】:

我有一个可以在 C# 中翻译成字典的对象,我正在尝试遍历所有“键”,以便按顺序绘制对象。

假设这个字典包含三个对象,键为 1、2 和 3。

for (var key in myDictionary) {
    if (key === "indexOf" || key === "length")
        continue;
    // Do stuff...
}

现在,在 IE9+、Chrome 和 Firefox 中,输出将为 1、2、3,而在 IE8 中,输出为 2、1、3。 因为对于我的应用程序来说,给出这些对象是至关重要的,这样您才能理解这是不受欢迎的行为。

因此,我的问题是: 为什么会发生这种情况?是否有已知的解决方法可以解决我的问题?

【问题讨论】:

    标签: javascript internet-explorer-8


    【解决方案1】:

    这是因为对象中的属性没有任何特定的顺序。获取属性的顺序取决于实现,即属性如何在对象内部存储。

    以与您预期不同的顺序返回属性的浏览器并没有做错任何事情,实际错误是预期任何特定的顺序。

    如果您希望属性按特定顺序排列,则需要对它们进行排序。你可以把它们放在一个数组中,对数组进行排序,然后循环遍历数组。

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2017-10-26
      • 2019-05-19
      • 2017-01-05
      • 2021-10-14
      相关资源
      最近更新 更多