考虑一下,我有这个对象:
var ob = {
"page1.html" : {...},
"page2.html" : {...},
"page3.html" : {...}
}
我无法将其更改为数组,我无法访问该数据,我想知道的是,通过索引访问对象属性是否安全,所以:
var obVal = ob[0]; // reliably returns "page1.html"'s value every time
我知道在这种情况下不应该使用每个循环,因为值是哈希值或其他值?但是按索引引用可能没问题?
答案 0 :(得分:8)
不,ob[0]
甚至不起作用 - 它会给undefined
。事实上,如果您的对象是:
var ob = {
"0": "blah",
"page1.html" : {...},
"page2.html" : {...},
"page3.html" : {...}
}
ob[0]
会给你"blah"
。
for-each循环 是适用于这种情况的正确工具,但您应该检查循环中的每个索引是否实际属于该对象,而不是父项:
for (var i in ob) { // i will be "page1.html", "page2.html", etc...
if (!ob.hasOwnProperty(i)) continue;
// Do something with ob[i]
}