包含逗号分隔坐标数组的Javascript对象

时间:2013-06-06 01:57:15

标签: javascript arrays object

包含逗号分隔数字数组的对象的正确格式是什么? 这是我正在做的事情,但我不确定这是否正确:

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);
    }
}

将原始坐标作为逗号分隔的字符串返回。有什么建议吗?

2 个答案:

答案 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]);
      }
    }
  }
}