Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含逗号分隔坐标数组的Javascript对象_Javascript_Arrays_Object - Fatal编程技术网

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

包含逗号分隔坐标数组的Javascript对象,javascript,arrays,object,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){

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

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);
    }
}
并将原始坐标作为逗号分隔的字符串返回。有什么建议吗?

不幸的是,你没有做到你所期望的

在对象上迭代时,创建的变量是当前迭代的属性名。它是迭代数组时数组的索引

for(var prop in myObj){
    for(var i in myObj[prop]){
        alert(myObj[prop][i]);
    }
}
注意,在对象上进行迭代时,您可能只希望迭代该对象的直接属性,而不希望迭代protype链上的属性。如果只想迭代对象上的直接属性,请使用

for(var prop in myObj){
    if(myObj.hasOwnProperty(prop)) {
        for(var i in myObj[prop]){
            if(myObj[prop].hasOwnProeprty(i)) {
                alert(myObj[prop][i]);
            }
        }
    }
}

请记住,javascript中的
for in
循环返回的是一个objects属性键,而不是键所指的对象。也可用于避免可能在对象原型上循环

您需要将其更改为:

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

没有“正确的道路”。这取决于情况和什么是合理的。但是,如果不包括使用
hasOwnProperty
@MattBurland,则不应在中为..使用
forprocessing@Ian:这不是不必要的处理,这是公认的最佳实践。尝试阅读“Javascript,好的部分”。强烈推荐。@MattBurland也推荐它,我在MDN上看不到任何地方说“你应该总是使用
hasOwnProperty
。没有它的例子表明它工作得很好。你应该只在必要时使用
hasOwnProperty
。哦,所以我们都必须遵循“JavaScript,好的部分”?我不明白什么是“最佳实践”“在这里……”伊恩:<代码>如果您只想考虑对象本身的属性,而不是它的原型,则使用GeOutsPrimeType名称或执行HasObjyTabor检查< /C>。不是
也许你应该考虑一下
使用
。非常感谢!我习惯于php,我想我是用foreach术语思考的。For in循环应该始终在javascript中包含一个.hasOwnProperty检查,这是一个很好的实践。@Ian这没关系,因为你不会这么做?我看不出这种逻辑是如何适用于我们其他人的。@Ian我指的是你的陈述:“没关系,因为我从来没有,也永远不会,做一些导致需要拥有自己财产的事情。”我已经阅读了评论,谢谢。该线程还提到使用其他人的代码,其中对象已被直接修改,并且您给出了完全不合逻辑的响应,但嘿,继续光顾。