2010-02-12 2 views
89

Sto provando il creare la seguente:Come si crea array JavaScript (formato JSON) in modo dinamico?

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 

Ho iniziato con

var employees = new Array(); 

Come faccio a continuare a creare l'array dinamico (potrebbe cambiare firstName con variabile)? Non mi sembra di avere la matrice nidificata giusta.

+7

Il modo preferito di creare un array in javascript è var employess = []; dipendenti non var = nuova matrice(); –

risposta

195

nostro array di oggetti

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

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

o con Array.prototype.map(), che è molto più pulito:

var employees = { 
    accounting: [] 
}; 

someData.map(function(item) {   
    employees.accounting.push({ 
     "firstName" : item.firstName, 
     "lastName" : item.lastName, 
     "age"  : item.age 
    }); 
} 
30
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; 
+0

questo è migliore dell'esempio precedente, questo dice anche come aggiungere dinamicamente l'array. – Harry

+0

ma se lo sto passando in un altro file, non è definito. – Tripathi29

+0

Cosa succede se ho bisogno che il nome dell'array sia dinamico? – easythrees

4

Quello che faccio è qualcosa di leggermente diverso m @ Risposta alla fase:

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

E quel lavoro mi forma!

Spero possa essere utile per qualcun altro!

+0

Da dove proviene l'elemento variabile? –

+0

ora fissato @IrfanRaza –

1
var student = []; 
var obj = { 
    'first_name': name, 
    'last_name': name, 
    'age': age, 
} 
student.push(obj);