2010-02-12 18 views
89

Estoy intentando el crear lo siguiente:¿Cómo creo una matriz de JavaScript (formato JSON) dinámicamente?

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 

Empecé con

var employees = new Array(); 

¿Cómo continúo para crear la matriz de forma dinámica (puede cambiar con firstName variable)? No parece obtener la matriz anidada correcta.

+7

La forma preferida de crear una matriz en javascript es var employess = []; no var employees = new Array(); –

Respuesta

195

Nuestra matriz de objetos

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

por ... en

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(), que es mucho más limpio:

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

esto es mejor que el ejemplo anterior, esto también le dice cómo agregar la matriz dinámicamente. – Harry

+0

pero si lo estoy pasando en otro archivo, no está definido. – Tripathi29

+0

¿Qué sucede si necesito que el nombre de la matriz sea dinámico? – easythrees

4

Lo que hago es algo un poco diferente para m @Chase respuesta:

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

Y eso me forma!

¡Espero que pueda ser útil para otros cuerpos!

+0

¿De dónde viene el elemento variable? –

+0

ahora está arreglado @IrfanRaza –

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