【问题标题】:Add a child to a JavaScript object with a variable name使用变量名将子对象添加到 JavaScript 对象
【发布时间】:2017-01-23 19:32:33
【问题描述】:

假设我有一个空白的 JavaScript 对象:

myObject {}

而且我还有一个变量:

var myChildObject = this.name.split('.')[1];

举个例子,假设myChildObject 等于“FooBar”。现在,我想向myObject 添加一个名为“FooBar”的子对象,但我们不能硬编码“FooBar”。我们必须使用变量名myChildObject

我试过了:

myObject.appendChild(myChildObject);

这行不通。

目标是这样的:

{  
   "myObject":{  
      "FooBar":{  
         "thing1":25,
         "thing2":6
      },
      .....
}

但我需要动态构建整个东西,而不需要提前知道名称(根除外)。

【问题讨论】:

  • "FooBar" 是一个字符串,而不是一个对象。
  • myObject[myChildObject] = ?;
  • 对@马达拉。我想添加一个名为“FoBar”的新对象
  • JavaScript 对象有键值对。你想要什么作为 FooBar 的键

标签: javascript


【解决方案1】:

对象是一种“键值”类型的东西,有点像 Java 中的 Map。你有没有尝试过这样的事情:

let myObject = {};
let myChildObject = "fooBar";
myObject[myChildObject] = {};

这样你的对象就有了一个“fooBar”键...现在你必须决定你希望该键的值是什么。

【讨论】:

    【解决方案2】:

    对象只能有键值对。你不能只使用一个而没有另一个。如果您不想分配值,则只需给出未定义的值。如果您不知道属性的名称,那么您可以简单地将数组类型表示法用于对象“[]”。参考下面的代码

    var myObject = {};
    var myChildObject = this.name.split('.')[1];
    
    myObject[myChildObject] = undefined;
    
    console.log(myObject.hasOwnProperty(myChildObject)); // true
    

    【讨论】:

      【解决方案3】:
      var myObject = {};
      var myChildObject = this.name.split('.')[1];
      myObject[myChildObject] ={  
           "thing1":25,
           "thing2":6
        };
      

      【讨论】:

      • 谢谢,但问题是,FooBar 不能硬编码。我不知道 FooBar 的名字提前,所以它必须是一个变量
      • 好的,我们现在开始做事了!让我玩这个,我会 BRB。
      【解决方案4】:

      我会说

      for(var key in myChildObject) {
        myObject[key] = myChildObject[key]
      }
      

      【讨论】:

        【解决方案5】:

        不知道你的问题是什么意思,但 myObject["foobar"] 可能就是你要找的东西

        【讨论】:

          猜你喜欢
          • 2010-12-17
          • 1970-01-01
          • 2011-05-03
          • 2017-01-19
          • 2020-07-13
          • 2017-10-27
          • 2010-10-16
          • 2013-02-17
          相关资源
          最近更新 更多