var triangle = {a:1, b:2, c:3};
for (var x in triangle) {
console.log(x)
}
这样的话,我是不是没法保证每次输出都是:
a
b
c
在不修改triangle = {a:1, b:2, c:3}
的情况下,我如果能够顺序的读取其中的属性?
var triangle = {a:1, b:2, c:3};
for (var x in triangle) {
console.log(x)
}
这样的话,我是不是没法保证每次输出都是:
a
b
c
在不修改triangle = {a:1, b:2, c:3}
的情况下,我如果能够顺序的读取其中的属性?
名言:“ASSUME = ASS U & ME”。
即,永远不要把你的程序建立在任何的假设上。假设就是把你和我都当成了ASS。
字典是一种有对应无顺序的结构。如果你希望输出依赖顺序,就不要用无序的数据结构。
取出所有的索引(key)组成一个数组,将这个数组明确的按字母序排序。然后foreach遍历这个数组,就可以按索引的字典顺序,逐个读取记录值了。
先把所有 key 取出来,比如用 Object.keys()
var keys = Object.keys(triangle);
然后再把 keys 数组排序,然后再遍历这个数组。
6 回答5.3k 阅读✓ 已解决
9 回答9.5k 阅读
5 回答3.7k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.1k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
这篇文章有详细介绍:SJ9011: Chrome Opera 中 for-in 语句遍历出对象属性的顺序与定义的不同
文章最后给出了解决方案:
for-in 语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。 如果想按照定义的次序遍历对象属性,请参考本文针对各浏览器编写特殊代码。