我正在尝试重写 reduce
方法。
我有几件事不确定。首先,它给出了错误的结果,我不知道为什么。其次,如果我没有将 reducez
函数分配给 const
或 let
,则会出现错误。
下面的代码报错
Cannot read property 'reducuez' of undefined
有谁知道这是为什么
[1, 2, 3].reducuez((a, b) => {
return a + b;
});
这是我尝试编写 reduce
方法的实际代码。
Array.prototype.reducuez = function(callback) {
let initialValue = 0;
for (let i = 0; i < this.length; i++) {
initialValue += callback(this[i], initialValue)
}
return initialValue;
}
const y = [1, 2, 3].reducuez((a, b) => {
return a + b;
});
console.log(y); // this is 11, should be 6
最佳答案
initialValue += callback(this[i], initialValue)
应该是
initialValue = callback(this[i], initialValue)
因为当你在每次回调后附加值时,initalValue 的值在回调中被添加两次,一次由于 += 而添加
Array.prototype.reducuez = function(callback) {
let initialValue = 0;
for (let i = 0; i < this.length; i++) {
initialValue = callback(this[i], initialValue)
}
return initialValue;
}
const y = [1, 2, 3].reducuez((a, b) => {
return a + b;
});
console.log(y); // this is 11, should be 6
关于javascript - 重写 reduce 方法 js 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54482767/