请解释这段JavaScript数组过滤代码及!rem.includes(a)的作用
代码逻辑解析
先看完整代码:
const rm=(arr, ...rem)=>arr.filter(a=>!rem.includes(a)) console.log(rm([1, 2, 3, 4], 3, 2)); // 输出结果: [1,4]
核心逻辑拆解
filter方法的作用是保留回调函数返回true的元素,最终生成新数组。rem.includes(a)用来判断当前遍历的元素a是否存在于要移除的集合rem中:- 若
a在rem里(比如例子中的2、3),rem.includes(a)返回true; - 若
a不在rem里(比如例子中的1、4),rem.includes(a)返回false。
- 若
- 加
!取反的原因:我们的目标是移除那些在rem里的元素,所以需要让filter保留不在rem里的元素。取反后:- 当
a在rem里时,!true变为false,filter会丢弃这个元素; - 当
a不在rem里时,!false变为true,filter会保留这个元素。
- 当
这就实现了从原数组arr中移除所有rem参数指定元素的效果。
内容的提问来源于stack exchange,提问作者Franco Silva
相关产品推荐
相关产品推荐

