我正在尝试使用forEach lambda在对象中设置一些值:
var row = {title: "", attribute:"", width: ""};
list.forEach( list =>
row.title = list.label |
row.attribute = list.label |
row.width = "300px"
);
当我添加其余参数时,仅使用语句row.title = list.label
才能正常工作。
什么是正确的语法?
答案 0 :(得分:13)
尝试:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px"
});
注意花括号。
答案 1 :(得分:3)
您需要大括号,因为=>
之后的部分是函数体:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px";
});
(请注意,如果这是您实际运行的代码,row
中的值将设置为列表中最后一个条目的值。)
答案 2 :(得分:1)
你应该用箭头括号在箭头函数中包装非返回语句:
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();
});
答案 3 :(得分:0)
现在row
将保存.forEach的每个循环中的数据,因此您将只获取已处理的最后一个元素的数据。您希望创建一个新对象来存储数据"对于每个"这些循环,然后有一个填充数组。
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"));
});
或者,map
函数可以在更少的代码中执行您想要的操作。
var rows = list.map( ( item ) => {
return new Row(item.label, item.label, "300px");
});