Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 累加器在生成'reduce'方法中返回未定义_Javascript_Reduce - Fatal编程技术网

Javascript 累加器在生成'reduce'方法中返回未定义

Javascript 累加器在生成'reduce'方法中返回未定义,javascript,reduce,Javascript,Reduce,我尝试使函数与Array.prototype.reduce方法工作相同 函数A集合、迭代器、累加器{ 对于Object.keys集合的i{ 如果i==0&&累加器===未定义{ 累加器=集合[i] 持续 } 累加器=迭代器累加器,集合[i] } 回流蓄能器; }; [1,2,3],functionacc,cur{return acc+=cur},0//这很好用。返回6 [1,2,3],functionacc,cur{return acc+=cur}//应为6,但返回NaN [1,2,3],fun

我尝试使函数与Array.prototype.reduce方法工作相同

函数A集合、迭代器、累加器{ 对于Object.keys集合的i{ 如果i==0&&累加器===未定义{ 累加器=集合[i] 持续 } 累加器=迭代器累加器,集合[i] } 回流蓄能器; }; [1,2,3],functionacc,cur{return acc+=cur},0//这很好用。返回6 [1,2,3],functionacc,cur{return acc+=cur}//应为6,但返回NaN [1,2,3],functionmemo{returnmemo};//应为1,但返回未定义 我不知道为什么当函数a的第三个参数的初始值未传递时,累加器未设置为集合[I],并保持未定义状态。

Object.keys始终返回字符串数组,因此I是字符串,因此I==0始终为false

还要注意,您需要声明i。现在,您的代码正沦为牺牲品。我建议使用严格模式,这样他们就应该一直犯错误

FWIW,以下是解决这两个问题的最低更新,但也请参见以下内容:

严格使用; 函数A集合、迭代器、累加器{ 设first=true;//*** 对于Object.keyscollection的常量i{ // ^^^^^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− *** 宣布“我` 如果第一个&&累加器===未定义{ // ^^^^^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− *** 第一关? first=false;//*** 累加器=集合[i] 持续 } first=false;//*** 累加器=迭代器累加器,集合[i] } 回流蓄能器; }; loga[1,2,3],functionacc,cur{return acc+=cur},0; loga[1,2,3],functionacc,cur{return acc+=cur};
loga[1,2,3],functionmemo{returnmemo};感谢你教我一些我完全不懂甚至根本没注意到的东西。我喜欢你的答案