【问题标题】:How do I create JavaScript array (JSON format) dynamically?如何动态创建 JavaScript 数组(JSON 格式)?
【发布时间】:2010-02-12 10:02:17
【问题描述】:

我正在尝试创建以下内容:

var employees = {
  "accounting": [ // accounting is an array in employees.
    {
      "firstName": "John", // First element
      "lastName": "Doe",
      "age": 23
    },

    {
      "firstName": "Mary", // Second Element
      "lastName": "Smith",
      "age": 32
    }
  ] // End "accounting" array.                                  

} // End Employees

我开始了

 var employees = new Array();

如何继续动态创建数组(可能会使用变量更改firstName)?我似乎没有得到正确的嵌套数组。

【问题讨论】:

  • 在 javascript 中创建数组的首选方法是 varemployess = [];不是 var employees=new Array();

标签: javascript json


【解决方案1】:

我们的对象数组

var someData = [
   {firstName: "Max", lastName: "Mustermann", age: 40},
   {firstName: "Hagbard", lastName: "Celine", age: 44},
   {firstName: "Karl", lastName: "Koch", age: 42},
];

用 for...in

var employees = {
    accounting: []
};

for(var i in someData) {    

    var item = someData[i];   

    employees.accounting.push({ 
        "firstName" : item.firstName,
        "lastName"  : item.lastName,
        "age"       : item.age 
    });
}

或者用Array.prototype.map(),更简洁:

var employees = {
    accounting: []
};

someData.map(function(item) {        
   employees.accounting.push({ 
        "firstName" : item.firstName,
        "lastName"  : item.lastName,
        "age"       : item.age 
    });
}

【讨论】:

    【解决方案2】:
    var accounting = [];
    var employees = {};
    
    for(var i in someData) {
    
        var item = someData[i];
    
       accounting.push({ 
            "firstName" : item.firstName,
            "lastName"  : item.lastName,
            "age"       : item.age 
        });
    }
    
    employees.accounting = accounting;
    

    【讨论】:

    • 这比上面的例子要好,这也告诉了如何动态添加数组。
    • 但如果我在另一个文件中传递它,它是未定义的。
    • 如果我需要该数组的名称是动态的怎么办?
    【解决方案3】:
    var student = [];
    var obj = {
        'first_name': name,
        'last_name': name,
        'age': age,
    }
    student.push(obj);
    

    【讨论】:

      【解决方案4】:

      我所做的与@Chase 的回答有点不同:

      var employees = {};
      
      // ...and then:
      employees.accounting = new Array();
      
      for (var i = 0; i < someArray.length; i++) {
          var temp_item = someArray[i];
      
          // Maybe, here make something like:
          // temp_item.name = 'some value'
      
          employees.accounting.push({
              "firstName" : temp_item.firstName,
              "lastName"  : temp_item.lastName,
              "age"       : temp_item.age
          });
      }
      

      那是我的作品!

      我希望它对其他人有用!

      【讨论】:

      • 变量项从何而来?
      • 它现在已修复 @IrfanRaza
      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多