You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Array.reduce时修改累加器是否不推荐?附两类代码示例

关于Array.reduce使用的两个问题解答

1. 统计元素出现次数的写法是否不推荐?

你写的这个统计次数的函数完全可以正常工作,修改累加器的操作其实没有问题——因为累加器是数字(基本类型),accumulator++本质是在函数内部生成一个新数值后返回,并没有破坏reduce的工作逻辑。

不过从函数式编程的风格角度,更推荐用表达式直接返回结果,避免对参数做赋值操作,写法会更简洁:

function countOccurrencesReduceOwn(array, searchElement) {
  return array.reduce((accumulator, currentValue) => 
    currentValue === searchElement ? accumulator + 1 : accumulator, 
  0);
}

但原写法绝对算不上“不推荐”,只是风格差异,功能完全没问题。

2. 获取最大值的函数为什么无法运行?

这个函数不工作的问题和修改累加器无关,纯粹是因为你最后没有返回结果!函数里定义了largest变量,但结尾没写return largest;,调用时会默认返回undefined。

修正后的代码如下:

function getMaxReduceOwn(array) {
  if(array.length <= 0) {
    return undefined;
  }
  const largest = array.reduce((largest, currentValue) => { 
    if(currentValue > largest) {  
      largest = currentValue;
    }
    return largest;
  }, array[0]);
  return largest; // 加上这行就正常了
}

同样,这里的largest = currentValue操作也没问题,也可以改成更简洁的表达式写法:

function getMaxReduceOwn(array) {
  if(array.length <= 0) {
    return undefined;
  }
  return array.reduce((largest, currentValue) => 
    currentValue > largest ? currentValue : largest, 
  array[0]);
}

内容的提问来源于stack exchange,提问作者Suvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:57:21