251 votes

Comment créer un tableau d'objets littéraux dans une boucle ?

J'ai besoin de créer un tableau d'objets littéraux comme ceci :

var myColumnDefs = [
    {key:"label", sortable:true, resizeable:true},
    {key:"notes", sortable:true,resizeable:true},......

Dans une boucle comme celle-ci :

for (var i = 0; i < oFullResponse.results.length; i++) {
    console.log(oFullResponse.results[i].label);
}

La valeur de key devrait être results[i].label dans chaque élément du tableau.

4voto

JPIyo Points 65

Dans la même idée que Nick Riggs mais je crée un constructeur, et je pousse un nouvel objet dans le tableau en l'utilisant. Cela évite la répétition des clés de la classe :

var arr = [];
var columnDefs = function(key, sortable, resizeable){
    this.key = key; 
    this.sortable = sortable; 
    this.resizeable = resizeable;
    };

for (var i = 0; i < len; i++) {
    arr.push((new columnDefs(oFullResponse.results[i].label,true,true)));
}

4voto

Pe Wu Points 167

Si vous voulez aller encore plus loin que @tetra avec ES6, vous pouvez utiliser la fonction Syntaxe d'étalement des objets et faire quelque chose comme ça :

const john = {
    firstName: "John",
    lastName: "Doe",
};

const people = new Array(10).fill().map((e, i) => {(...john, id: i});

3voto

BenM Points 2241

Je créerais le tableau, puis j'y ajouterais les éléments littéraux de l'objet.

var myColumnDefs = [];

for ( var i=0 ; i < oFullResponse.results.length; i++) {

    console.log(oFullResponse.results[i].label);
    myColumnDefs[myColumnDefs.length] = {key:oFullResponse.results[i].label, sortable:true, resizeable:true};
}

3voto

Nick Riggs Points 1051
var myColumnDefs = new Array();

for (var i = 0; i < oFullResponse.results.length; i++) {
    myColumnDefs.push({key:oFullResponse.results[i].label, sortable:true, resizeable:true});
}

7 votes

Il est préférable d'initialiser un tableau à l'aide de [] au lieu de new Array() .

0 votes

Discussion intéressante [] vs. new Array() stackoverflow.com/questions/7375120/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X