如何将一个Javascript对象推送到另一个Javascript对象?

时间:2013-09-25 12:50:07

标签: javascript json

我有一个函数,我在迭代数据对象,我从数据库中提取。在foreach循环中,我试图创建一个对象(触发器)并将其推送到另一个变量(Geo),我将用它来放入另一个变量(触发器)。以下是代码 -

var Geo={};

array.forEach(this.cityData,lang.hitch(this, function(data,i){
    var trigger = {
        type: "Inside",

        event: {
            name: data.Name,
            address:data.Address
        }
    };

    var Location= "Location_"+i;
    Geo.Location=trigger;  // pushing trigger in Geo variable
}));

var triggers = {
    Geo  //using Geo in trigger
};

var triggers={Geo};相当于以下代码吗?

我的推送代码Geo.Location=trigger;是否正确?

var triggers = {
    Geo: {
        Location_1: trigger1,
        Location_2: trigger2 ...... and so on...
    }
};

2 个答案:

答案 0 :(得分:3)

我没有测试它,但它看起来几乎一样。 就一件事: 这应该给你一个例外:

var triggers = {
      Geo  //using Geo in trigger
    };

声明应为

 var triggers = {
      'Geo': Geo  //using Geo in trigger
    };

否则触发器将不具有Geo属性。

Geo.Location=trigger;就好了。

答案 1 :(得分:0)

通过点表示法(obj.property)访问的对象中的属性始终被简单地视为属性名称 - 即不评估变量。您可以使用括号表示法来拥有动态属性名称:obj [property],它将“property”转换为字符串(必要时解析变量值)并将其用作实际属性名称。

所以,试试changin:

Geo.Location

为:

Geo[Location]

编辑:我不确定预期的最终结果是什么,但是如果你想要实现上一个代码块中显示的对象,那么正确的语法应该是:

triggers.Geo = Geo;

再次考虑到点符号形式中的“Geo”只是属性的字符串名称,并且与同名变量无关。