javascript - 重写 reduce 方法 js 的问题

标签 javascript ecmascript-6

我正在尝试重写 reduce 方法。

我有几件事不确定。首先,它给出了错误的结果,我不知道为什么。其次,如果我没有将 reducez 函数分配给 constlet,则会出现错误。

下面的代码报错

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/

相关文章:

javascript - 如何在 Sublime 3 中为 tern-js 设置跳转到方法定义键绑定(bind)

javascript - 如何更改段落文本 onclick 列表项?

javascript - 如何在AngularJS语法ES6中的两个组件之间传递数据?

javascript - 如何使用图表 js 设置好日期

javascript - 用于移动浏览器的 Reactjs 中的事件监听器

javascript - DataTables、es6 箭头函数和 this

javascript - 使用 ImmutableJS Record 创建具有不同属性的子类

javascript - 从 gulp-watch 的 .on() 事件运行任务

javascript - 错误 : Shuffle needs to be initialized with an element

javascript - 使用for循环动态打印多维数组元素