J'essaie de définir des valeurs dans un objet en utilisant forEach lambda:
var row = {title: "", attribute:"", width: ""};
list.forEach( list =>
row.title = list.label |
row.attribute = list.label |
row.width = "300px"
);
Fonctionne bien uniquement avec une instruction row.title = list.label
lorsque j'ajoute le reste des paramètres ne fonctionne pas bien.
Quelle est la bonne syntaxe?
Essayer:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px"
});
Remarquez les accolades.
Vous avez besoin d'accolades, car la partie après le =>
est un corps de fonction:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px";
});
(Sachez que s'il s'agit du code que vous exécutez réellement, les valeurs dans row
seront définies sur les valeurs de la dernière entrée de la liste.)
Vous devez envelopper les instructions non-retournées dans la fonction de flèche avec des accolades:
var list = [
{ label: 'one' },
{ label: 'two' },
{ label: 'three' }
];
var row = {title: "", attribute:"", width: ""};
list.forEach(list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px";
console.log('Row is', row);
console.log();
});
En l'état actuel, row
conservera les données dans chacune de vos boucles de .forEach, de sorte que vous n'obtiendrez que les données du dernier élément traité. Vous voulez créer un nouvel objet pour stocker les données "pour chacune" de ces boucles, puis créer un tableau rempli.
var Row = (title, attribute, width) => {
this.title = title;
this.attribute = attribute;
this.width = width;
};
var rows = [];
list.forEach( item => {
rows.Push(new Row(list.label, list.label, "300px"));
});
Sinon, la fonction map
peut faire ce que vous voulez avec moins de code.
var rows = list.map( ( item ) => {
return new Row(item.label, item.label, "300px");
});