javascript在forEach中使用return
我不确定问题标题是否正确,但我只是在尝试使用此函数时遇到了问题 在第一个示例中,所有输出都是javascript在forEach中使用return,javascript,Javascript,我不确定问题标题是否正确,但我只是在尝试使用此函数时遇到了问题 在第一个示例中,所有输出都是NaN,但在第二个示例中,代码正常工作。我不明白为什么第一个不能工作,是什么导致了不同的结果 希望你能帮助我 非常感谢 //1 function sum(...rest) { var sum=0; sum+=rest.forEach(function (value){ return value; }); return sum; } sum(); sum(1); su
NaN
,但在第二个示例中,代码正常工作。我不明白为什么第一个不能工作,是什么导致了不同的结果
希望你能帮助我
非常感谢
//1
function sum(...rest) {
var sum=0;
sum+=rest.forEach(function (value){
return value;
});
return sum;
}
sum();
sum(1);
sum(2,3);
//2
function sum(...rest) {
var sum=0;
rest.forEach(function (value){
sum+=value;
});
return sum;
}
sum();
sum(1);
sum(2,3);
您不能像第一个示例中那样使用
forEach
您需要的是Array.prototype.reduce
可以从迭代中累积值,如下所示:
function sum(...rest) {
return rest.reduce(function(result, item) {
return result += item;
});
}
forEach
不返回值
如果您想要这种行为,最好使用:
function sum(...rest) {
return rest.reduce(function(prev, next) { return prev + next; });
};
您可以使用map()
函数获取每个元素的总和。通过参数
变量获取动态参数
函数和(){
var总和=0;
var args=[];
对于(参数中的i)args.push(参数[i]);
如果(参数长度>0){
总和=参数减少(函数(总计,值){
返回总+值;
});
}
回报金额;
}
log(sum());
控制台日志(总和(1));
控制台日志(总和(1,2,3))
是一个函数,它只返回1未定义
,无论函数在函数中运行多少次。所以你基本上是在总和后面加上1undefined
您可以使用与类似的函数,只是它在迭代所有项后返回结果。这里是
sum()
函数的一个实现,使用并添加一个等于零的初始值:
let sum=(…rest)=>rest.reduce((结果,值)=>result+value,0);
log(sum());
控制台日志(总和(1));
控制台日志(总和(1,2,3));
控制台日志(总和(-3,-5))代码>可以与箭头函数和开始值一起使用
var总和=(…rest)=>rest.reduce((a,b)=>a+b,0);
log(sum());
控制台日志(总和(1));
控制台日志(总和(2,3))
阅读的文档我在发布后10秒就删除了它,因为我仔细阅读了它。@user2415266,谢谢。我应该先这么做。为什么不使用“Rest参数”?@Arnial,根据示例,OP需要函数中传递的所有参数的总和。。但他误解了如何使用动态参数您的代码有一个错误:“Uncaught SyntaxError:Unexpected token)”感谢@Yosvellquintero现已修复。感谢Davin,我没有研究forEach()以了解其返回值是我的错。