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

JavaScript数组过滤异常:删除匹配@b.com元素时始终返回空数组求解

问题分析与解决
  • 核心问题:filter回调函数缺少返回值
    你的箭头函数用了大括号{},但里面仅写了!e.match(/@b.com/);,没有通过return返回这个表达式的结果。箭头函数在使用大括号包裹代码块时,必须显式声明返回值,否则默认返回undefined。而filter会把undefined判定为false,导致所有元素都被过滤,最终得到空数组。

  • 额外优化点:正则与匹配方法的细节
    正则里的.是通配符,会匹配任意字符,如果要匹配字面量的.,需要转义成\.,即/@b\.com/。
    另外,match方法匹配成功返回数组、失败返回null,用!判断虽然能生效,但改用RegExp.test()会更直观——它直接返回布尔值,可读性更强。

修正后的代码示例:

const arr = ['a@a.com', 'b@b.com', 'c@c.com'];

if (arr !== null && arr.length > 0) {
   // 方案1:补全return,修正正则
   const arr2 = arr.filter(e => {
      return !e.match(/@b\.com/);
   });
   // 方案2:去掉大括号让箭头函数自动返回结果,用test更清晰
   // const arr2 = arr.filter(e => !/@b\.com/.test(e));
   console.log(arr2); // 输出 ['a@a.com', 'c@c.com']
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:06:06