Comment créer dynamiquement un tableau JavaScript (format JSON)?

122

J'essaye de créer ce qui suit:

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

J'ai commencé avec

 var employees = new Array();

Comment continuer à créer le tableau dynamiquement (peut changer firstNameavec la variable)? Je ne semble pas avoir le bon tableau imbriqué.

sebas23
la source
8
La méthode préférée pour créer un tableau en javascript est var employess = []; pas var employés = new Array ();
Mattias Jakobsson

Réponses:

254

Notre gamme d'objets

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

avec pour ... dans

var employees = {
    accounting: []
};

for(var i in someData) {    

    var item = someData[i];   

    employees.accounting.push({ 
        "firstName" : item.firstName,
        "lastName"  : item.lastName,
        "age"       : item.age 
    });
}

ou avec Array.prototype.map(), ce qui est beaucoup plus propre:

var employees = {
    accounting: []
};

someData.map(function(item) {        
   employees.accounting.push({ 
        "firstName" : item.firstName,
        "lastName"  : item.lastName,
        "age"       : item.age 
    });
}
Alex
la source
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;
Chasse
la source
c'est mieux que l'exemple ci-dessus, cela indique également comment ajouter le tableau dynamiquement.
Harry
mais si je le passe dans un autre fichier, il n'est pas défini.
Tripathi29
Que faire si j'ai besoin que le nom de ce tableau soit dynamique?
easythrees
5

Ce que je fais est quelque chose d'un peu différent de la réponse @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
    });
}

Et ce travail me forme!

J'espère que cela pourrait être utile pour un autre organisme!

alexventuraio
la source
D'où vient l'élément variable?
Irfan Raza
c'est maintenant corrigé @IrfanRaza
alexventuraio
5
var student = [];
var obj = {
    'first_name': name,
    'last_name': name,
    'age': age,
}
student.push(obj);
Venu Upadhyay
la source