Javascript 重写reduce方法js的问题
我正在尝试重写Javascript 重写reduce方法js的问题,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试重写reduce方法 我有几件事我不确定。首先,它给出了错误的结果,我不知道为什么。其次,如果我没有将reducez函数指定给const或let函数,则会出现错误 下面的代码给出了一个错误 无法读取未定义的属性“ReduceUez” 有人知道这是为什么吗 [1,2,3].reduceuez((a,b)=>{ 返回a+b; }); 这是我试图编写reduce方法的实际代码 Array.prototype.reducez=函数(回调){ 让initialValue=0; for(设i=
reduce
方法
我有几件事我不确定。首先,它给出了错误的结果,我不知道为什么。其次,如果我没有将reducez
函数指定给const
或let
函数,则会出现错误
下面的代码给出了一个错误
无法读取未定义的属性“ReduceUez”
有人知道这是为什么吗
[1,2,3].reduceuez((a,b)=>{
返回a+b;
});
这是我试图编写reduce
方法的实际代码
Array.prototype.reducez=函数(回调){
让initialValue=0;
for(设i=0;i{
返回a+b;
});
控制台日志(y);//这是11,应该是6
应该是
initialValue = callback(this[i], initialValue)
因为当您在每次回调后追加值时,initalValue的值会被添加两次,一次是在回调中,一次是由于+=
Array.prototype.reducez=函数(回调){
让initialValue=0;
for(设i=0;i{
返回a+b;
});
控制台日志(y);//这是11,应该是6
nice,reduce方法就这么简单。除了附加的初始值等?另外,为什么它不工作,除非我分配给一个变量?它也可以工作,而不分配给变量,但在每次迭代中,它必须为累加器设置一个值,以便您可以直接返回或使用一个变量。如果你理解它背后的概念,那就很容易了!我的意思是,如果删除常量
,就会出现错误。这不会发生在你身上吗?在这种情况下会有。我一直在考虑实际的reduce函数,如果它向上回答了您的问题,并将其标记为正确,这样它就可以帮助其他人。该问题的代码没有签名。@guest271314这是什么意思?需要更多的争论?你想达到什么目的?是否希望reduce方法返回数组中的项目总数?@peterflanagan问题表明代码正在尝试重写array.prototype.reduce()
,但与规范不符。有关.reduce()
的polyfill和实际规范第一条注释处的链接,请参阅。我也被未定义的错误弄糊涂了。
initialValue = callback(this[i], initialValue)