【问题标题】:How to create a dynamic object in a loop?如何在循环中创建动态对象?
【发布时间】:2011-01-23 22:02:56
【问题描述】:

基本上我想在 JavaScript 中创建一个包含多个对象的大对象。比如:

var objects = {}
for (x)
objects.x = {name: etc}

有什么想法吗?

【问题讨论】:

  • 这很令人困惑。回答这个问题:你在循环什么,你的预期结果是什么。陈述你的输入和你想要的输出。
  • 可能只有我,但我不明白...
  • 这个问题与我在这里的另一个问题有关:stackoverflow.com/questions/2375143/… 我尝试将它作为对象数组传递,但它不知何故不起作用,所以我正在尝试这种方法。类似于:ManyObjects: { Object1 : {name:etc, x:etc}, Object2 : {name:etc, x:etc}}

标签: javascript loops object


【解决方案1】:
var objects = {};

for (var x = 0; x < 100; x++) {
  objects[x] = {name: etc};
}

【讨论】:

    【解决方案2】:

    实际实现

    用 100 个其他对象填充一个容器对象。

    <script>
    var container = { }; // main object
    
    // add 100 sub-object values
    for(i = 0; i < 100; ++i) {
     container['prop'+i ]  /*property name or key of choice*/
             = { 'a':'something', 
                 'b':'somethingelse', 
                 'c': 2 * i
               }; 
    }
    

    测试结果 - 迭代并显示对象...

    for(var p in container) {
     var innerObj = container[p];
     document.write('<div>container.' + p + ':' + innerObj + '</div>');
     // write out properties of inner object
     document.write('<div> .a: ' + innerObj['a'] + '</div>');
     document.write('<div> .b: ' + innerObj['b'] + '</div>');
     document.write('<div> .c: ' + innerObj['c'] + '</div>');
    }
    </script>
    

    输出是这样的

    container.prop0:[object Object]
    .a: something
    .b: somethingelse
    .c: 0
    container.prop1:[object Object]
    .a: something
    .b: somethingelse
    .c: 2
    container.prop2:[object Object]
    .a: something
    .b: somethingelse
    .c: 4
    

    等等……

    【讨论】:

      【解决方案3】:

      试试这个

      var objects = new Array();
      var howmany = 10;
      
      for (var i = 0; i < howmany; i++)
      {
          objects[i] = new Object();
      
      }
      

      【讨论】:

      • 您有一个泄漏的全局 i 变量。不要忘记使用var
      • 不要使用 new Array()new Object(),因为它在性能方面并不高效。而是使用文字。
      【解决方案4】:

      使用object[propertyname] 与使用object.propertyname 相同,因此我们可以使用object[propertyname] 格式动态创建对象键
      例如:

      var fruits = ["Apple", "Orange", "Banana","Grapes"];
      var colors = ["red", "Orange", "yellow","blue"];
      var newObj = {};
      for (var i = 0; i < fruits.length; i++) {
        newObj[fruits[i]] = colors[i];
      }
      console.log(newObj);

      【讨论】:

        猜你喜欢
        • 2014-11-06
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 2021-05-06
        • 2015-02-04
        相关资源
        最近更新 更多