【问题标题】:How to push one Javascript object into another Javascript object?如何将一个 Javascript 对象推入另一个 Javascript 对象?
【发布时间】:2013-09-25 12:50:07
【问题描述】:

我有一个函数可以遍历从数据库中获取的数据对象。在 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...
    }
};

【问题讨论】:

  • 您好,此线程可能重复,请查看..stackoverflow.com/questions/11078630/…
  • 您的问题似乎希望两个对象都在彼此内部,这没有多大意义。
  • 你的代码正好有 0 个 JSON。
  • 是的 Oleg....我不应该使用 JSON 对象这个词...因为这些只是具有某些属性的 javascript 变量。感谢您指出这一点。

标签: javascript json


【解决方案1】:

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

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

语句应该是

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

否则触发器将没有 Geo 属性。

Geo.Location=trigger; 就好了。

【讨论】:

    【解决方案2】:

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

    所以,尝试改变:

    Geo.Location
    

    到:

    Geo[Location]
    

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

    triggers.Geo = Geo;
    

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

    【讨论】:

    • 不正确,Geo.Location = x 和 Geo["Location"] = x 的作用相同,它使用名为 Location 的属性扩展 Geo 对象。 Geo[Location] = x 通过返回 x 的匿名函数扩展 Geo 对象(在 Chrome 中,它在 IE 中不起作用)
    • @Ela:我同意你的第一个声明(Geo.Location = x 和 Geo["Location"] = x 是等价的),但我没有看到任何关于第二个正确性的证据一 - Geo[Location] = x 将在对象中添加一个属性,其名称等于变量 Location 的 (在操作的示例中,这将循环为“Location_1”,“ Location_2" 等等)——我做了一个快速的小提琴来说明我的意思:jsfiddle.net/TtJMn。还是我误解了你的意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多