0

我的代码:

for( var i in zones) {
                    var latlons1 = new google.maps.LatLng(zones[i].b.cen_x, zones[i].b.cen_y);
                    var latlons2 = new google.maps.LatLng(zones[i].b.max_x, zones[i].b.max_y);
                    var latlons3 = new google.maps.LatLng(zones[i].b.min_x, zones[i].b.min_y);

                     obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3}  } //here object creation

                    console.log(obj1);

                }

我做错了什么?在对象创建时显示 consol 日志错误。

4

2 回答 2

6

在 JavaScript 中创建对象字面量时,键和值用冒号 ( :) 分隔。另请注意,如果您想使用动态键,则需要使用方括号表示法来设置和访问这些属性。所以这:

obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3}  }

应该变成:

obj1 = {};
obj1[zones[i].n] = {
    1: latlons1,
    2: latlons2,
    3: latlons3
};

如果您对为什么必须这样做感到困惑,那是因为没有评估密钥。虽然您的意思是键应该是 引用的值,zones[i].n但 JavaScript 将其解释为键应该是字符串文字"zones[i].n",这显然不是您想要的。

于 2012-10-23T12:02:43.717 回答
0

要在对象中使用对象,

    //An object within an object
    var NestedObject=new Object();
    NestedObject.one={
    sad:{
    d:"Add"
    }
    }

我在 Codecademy.com 中使用实验性编码解决了这个问题;感谢您让我分享我的答案!

于 2014-04-08T11:58:13.863 回答