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

使用JavaScript的filter方法时如何获取被排除的不匹配元素

JavaScript filter拆分符合/不符合条件元素的实现方案

无需二次运行测试函数的最优方案

直接用reduce单次遍历数组即可完成两类元素的拆分,每个元素仅触发一次判断函数执行,适合数组规模大、判断函数逻辑复杂的场景,性能最优。

let arr; // 待执行筛选操作的数组,在其他位置定义
let fn; // 筛选判断函数,在其他位置定义
let goodElements; // 存储通过测试的符合要求元素的新数组
let badElements; // 存储未通过测试的被排除元素的新数组

// 单次遍历拆分两类元素
[goodElements, badElements] = arr.reduce((res, item) => {
  fn(item) ? res[0].push(item) : res[1].push(item)
  return res
}, [[], []])

必须二次运行测试函数的实现方案

如果场景限制必须分开两次调用filter,直接对判断函数的返回值取反即可,代码最简洁易读:

let arr; // 待执行筛选操作的数组,在其他位置定义
let fn; // 筛选判断函数,在其他位置定义
let goodElements; // 存储通过测试的符合要求元素的新数组
let badElements; // 存储未通过测试的被排除元素的新数组

goodElements = arr.filter(fn);
// 二次运行测试函数筛选不符合条件的元素
badElements = arr.filter(item => !fn(item));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:42:03