我有一个对象可以转换为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。 因为对我的应用程序来说,按顺序给出这些对象是至关重要的,你可以理解这是不需要的行为。
因此,我的问题是: 为什么会发生这种情况,是否有一个已知的解决方法可以解决我的问题?
答案 0 :(得分:2)
这是因为对象中的属性没有任何特定顺序。获得这些属性的顺序取决于实现,即属性如何存储在对象内部。
以不同于预期的顺序返回属性的浏览器并没有做错任何事情,实际的错误是期望任何特定的顺序。
如果您希望按特定顺序排列属性,则需要对它们进行排序。您可以将它们放在一个数组中,对数组进行排序,然后遍历数组。