-1

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

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

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

4

2 回答 2

3

请记住,for injavascript 中的循环返回对象属性键而不是键所指的对象。也用于.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]);
      }
    }
  }
}
于 2013-06-06T02:12:42.430 回答
3

不幸的是,for in 循环并没有达到您的预期。

您创建的变量是迭代对象时当前迭代的属性名称。当您遍历数组时,它是数组的索引。

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]);
            }
        }
    }
}
于 2013-06-06T02:05:29.170 回答