包含逗号分隔数字数组的对象的正确格式是什么? 这是我正在做的事情,但我不确定这是否正确:
var myObj = {
'coord1' : { 'section-a' : [216,259,216,294,165,294,165,259,216,259] },
'coord2' : { 'section-a' : [20,218,8,178,3,143,6,112,13] }
};
我想通过以下方式访问某个部分的坐标:
for(var coord in myObj){
for(var section in coord){
alert(section);
}
}
将原始坐标作为逗号分隔的字符串返回。有什么建议吗?
答案 0 :(得分:3)
不幸的是for in loops没有做到你所期望的那样。
您在迭代对象时创建的变量是当前迭代器的属性名称。迭代数组时,它是数组的索引。
for(var prop in myObj){
for(var i in myObj[prop]){
alert(myObj[prop][i]);
}
}
注意,在迭代对象时,您可能只想迭代该对象的直接属性,而不是原型链上的属性。如果您只想迭代对象上的直接属性,请使用hasOwnPrototype。
for(var prop in myObj){
if(myObj.hasOwnProperty(prop)) {
for(var i in myObj[prop]){
if(myObj[prop].hasOwnProeprty(i)) {
alert(myObj[prop][i]);
}
}
}
}
答案 1 :(得分:3)
请记住,javascript中的for in
循环返回对象属性键而不是键引用的对象。还可以使用.hasOwnProperty
来避免可能在对象原型上循环。
您需要将其更改为:
for (var coord in myObj){
if(myObj.hasOwnProperty[coord]){
var coord = myObj[coord];
for(var section in coord)
if(coord.hasOwnProperty[section]){
alert(coord[section]);
}
}
}
}