ฉันจะสร้างอาร์เรย์ JavaScript (รูปแบบ JSON) แบบไดนามิกได้อย่างไร


122

ฉันกำลังพยายามสร้างสิ่งต่อไปนี้:

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ด้วยตัวแปร) ฉันดูเหมือนจะไม่ได้รับอาร์เรย์ที่ซ้อนกันถูกต้อง


8
วิธีที่ต้องการในการสร้างอาร์เรย์ในจาวาสคริปต์คือ var Employess = []; ไม่ใช่พนักงาน var = อาร์เรย์ใหม่ ();
Mattias Jakobsson

คำตอบ:


254

อาร์เรย์ของวัตถุของเรา

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

ด้วยสำหรับ ...

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 
    });
}

40
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;

ดีกว่าตัวอย่างด้านบนซึ่งจะบอกวิธีการเพิ่มอาร์เรย์แบบไดนามิก
แฮร์รี่

แต่ถ้าฉันส่งผ่านไปในไฟล์อื่นมันจะไม่ได้กำหนด
Tripathi29

จะเกิดอะไรขึ้นถ้าฉันต้องการให้ชื่ออาร์เรย์นั้นเป็นแบบไดนามิก
easythrees

5

สิ่งที่ฉันทำมีบางอย่างที่แตกต่างจากคำตอบของ @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
    });
}

และงานนั้นเป็นรูปเป็นร่างฉัน!

หวังว่าคงจะมีประโยชน์กับร่างกายบ้างนะ!


จากที่รายการตัวแปรมาจากไหน?
Irfan Raza

@IrfanRaza
alexventuraio

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.