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

为什么统计数组元素次数的JavaScript函数selector返回undefined?

问题原因

JavaScript 中所有函数如果没有显式声明 return 返回值,默认会返回 undefined,这是语言层面的固定规则。你编写的 selector 函数虽然内部已经通过 forEach 遍历统计出了数字2的出现次数存在 counter 变量里,但没有写返回语句把这个结果抛出,所以调用函数的时候自然拿不到统计值。

修复方案

你只需要在遍历结束后加一行 return counter 即可,修正后的代码如下:

const arr = [1, 1, 2, 1, 2, 1]
const selector = function (arr) {
    let counter = 0;
    arr.forEach(element => {
        if (element == 2) {
            counter += 1;
        }    
    });
    // 新增返回语句
    return counter;
}

// 调用测试,输出结果为2
console.log(selector(arr))

其他更简洁的实现方式

如果需要简化代码,也可以用数组自带的方法直接统计,不需要手动维护计数器:

  • 用 filter 方法:
const selector = arr => arr.filter(item => item === 2).length
  • 用 reduce 方法:
const selector = arr => arr.reduce((count, item) => item === 2 ? count + 1 : count, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:02