Javascript中的“for…in”循环是否按照声明的顺序遍历哈希表/元素?有没有浏览器是不按顺序执行的?
我希望使用的对象只声明一次,永远不会被修改。
假设我有:
var myObject = { A: "Hello", B: "World" };
我进一步将它们用于:
for (var item in myObject) alert(item + " : " + myObject[item]);
在大多数像样的浏览器中,“A:“Hello”总是出现在“B:“World”之前吗?
订单不可信。Opera和Chrome都返回无序的属性列表。
<script type="text/javascript">
var username = {"14719":"A","648":"B","15185":"C"};
for (var i in username) {
window.alert(i + ' => ' + username[i]);
}
</script>
上面的代码显示了Opera中的B, A, C和Chrome中的C, A, B。
这并没有回答问题本身,但为基本问题提供了一个解决方案。
假设您不能依赖顺序来保存,为什么不使用具有键和值的对象数组作为属性呢?
var myArray = [
{
'key' : 'key1'
'value' : 0
},
{
'key' : 'key2',
'value' : 1
} // ...
];
现在,由您来确保键是唯一的(假设这对您也很重要)。同样,直接寻址也发生了变化,for(…in…)现在将索引作为“键”返回。
> console.log(myArray[0].key);
key1
> for (let index in myArray) {console.log(myArray[index].value);}
0
1
See the Pen
为(…in…)编址
by JDQ (
@JDQ
) on
CodePen
.