使用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
相关产品推荐
相关产品推荐

