¿Cómo creo dinámicamente una matriz de JavaScript (formato JSON)?


122

Estoy intentando crear lo siguiente:

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 creando la matriz dinámicamente (podría cambiar firstNamecon la variable)? Parece que no obtengo la matriz anidada correcta.


8
La forma preferida de crear una matriz en javascript es varmployess = []; no var employee = new Array ();
Mattias Jakobsson

Respuestas:


254

Nuestra gama de objetos

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

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

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;

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

pero si lo paso en otro archivo, no está definido.
Tripathi29

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

5

Lo que hago es algo un poco diferente de la respuesta de @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
    });
}

¡Y ese trabajo me forma!

¡Espero que pueda ser útil para algún otro cuerpo!


¿De dónde viene el elemento variable?
Irfan Raza

ahora está arreglado @IrfanRaza
alexventuraio

5
var student = [];
var obj = {
    'first_name': name,
    'last_name': name,
    'age': age,
}
student.push(obj);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.