【问题标题】:Javascript create object with property as dynamic objectsJavascript创建具有属性的对象作为动态对象
【发布时间】:2014-07-20 21:02:35
【问题描述】:

我尝试了很多搜索,但没有得到想要的解决方案。

我想要达到的是

var myObject {
  id1 : { 
    name:place_name,
    location : place_loc
  },
  id2 : { 
    name:place_name,
    location : place_loc
  },
  id3 : { 
    name:place_name,
    location : place_loc
  }
}

我想要做的是,最初我希望属性“id1”、“id2”.. 是动态的。然后动态分配 name:place_name 和每个属性的其他属性。

我不知道属性 (id1,id2,id3...) 的数量,因此想动态添加它们,并且在添加属性之后 (id1,id2...) 我想动态添加属性值。 (place_name & place_loc) 每个 id。

我的代码看起来像这样。

var myObject = {};
myObject[idnumber1].place = "SomePlace1";
myObject[idnumber1].place = "SomeLoc1";
myObject[idnumber2].place = "SomePlace1";
myObject[idnumber2].place = "SomeLoc1";

但它给出了错误。

我知道这似乎很简单,但如有任何帮助将不胜感激。

提前致谢。 :)

【问题讨论】:

    标签: javascript arrays oop object


    【解决方案1】:

    您正在尝试在键“idnumber1”等处设置已分配对象的值。

    您需要为您的 id 初始化每个对象,如下所示:

    var myObject = {};
    myObject[idnumber1] = {};
    myObject[idnumber1].place = "SomePlace1";
    myObject[idnumber2] = {};
    myObject[idnumber2].place = "SomeLoc1"
    

    【讨论】:

    • 或更好:myObject[idnumber1] = { place: "SomePlace1" }
    【解决方案2】:

    我会这样做,这并不完全符合您的要求,但我认为以后更改它会变得更容易。

    function Place(name, location) {
        this.name = name;
        this.location = location;
    }
    
    var myObject = {}
    myObject['id1'] = new Place('Foo', 'Bar');
    myObject['id2'] = new Place('Internet', 'test');
    console.log(myObject);
    

    【讨论】:

      【解决方案3】:

      要在您的集合中动态创建对象,您可以使用数值计数器变量来创建您的对象集合 (myObject["id" + i] = {name: place_name, location: place_loc})。

      一个例子:

      var myObject = {};
      for (i = 0; i < 20; i++){
          myObject["id" + i] = {name: place_name, location: place_loc}
      }
      

      实际上,您可以使用在循环外递增的计数器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-23
        相关资源
        最近更新 更多