lambdajavascript的正确语法
我试图使用forEach lambda在对象内设置一些值:lambdajavascript的正确语法,javascript,foreach,lambda,Javascript,Foreach,Lambda,我试图使用forEach lambda在对象内设置一些值: var row = {title: "", attribute:"", width: ""}; list.forEach( list => row.title = list.label | row.attribute = list.label | row.width = "300px" );
var row = {title: "", attribute:"", width: ""};
list.forEach( list =>
row.title = list.label |
row.attribute = list.label |
row.width = "300px"
);
当我添加其余参数时,只有语句row.title=list.label
才能正常工作
什么是正确的语法?您需要大括号,因为
=>
后面的部分是函数体:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px";
});
(请注意,如果这是您实际运行的代码,行中的值将设置为列表中最后一项的值。)尝试:
var row = {title: "", attribute:"", width: ""};
list.forEach( list => {
row.title = list.label;
row.attribute = list.label;
row.width = "300px"
});
请注意大括号。您应该用大括号将非返回语句包装在arrow函数中:
var列表=[
{标签:'一'},
{label:'two'},
{标签:'三'}
];
变量行={title:,属性:,宽度:};
list.forEach(list=>{
row.title=list.label;
row.attribute=list.label;
row.width=“300px”;
console.log('行是',行);
console.log();
});代码>目前的行
将保存.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");
});
请注意,“lambda”一词实际上从未在JavaScript中使用过。“lambda”在JS中被称为“匿名函数”。我认为它被称为箭头函数。您是否尝试过{}
?请看,我不确定您的代码是否说明了您的观点:请注意,您有一个名为item
的变量,但您没有使用它(在第一个代码段中)