¿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.

sebas23
fuente
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 
    });
}
Alex
fuente
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;
Persecución
fuente
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!

alexventuraio
fuente
¿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);
Venu Upadhyay
fuente