如何使用Array.filter()一次性移除数组中的多个指定值?
单个filter方法实现多字符排除当然可行!
当然可以用单个filter方法完成这个需求,你只需要在过滤的回调函数里同时判断要排除的两个字符就好啦~
直接判断的写法
最直观的方式就是用逻辑与(&&)把两个排除条件结合起来:
let arr = ["1", ":", "3", "0", " ", "P", "M"]; arr = arr.filter(n => n !== ":" && n !== " "); // 处理后 arr 的值为 ["1", "3", "0", "P", "M"]
原理很简单:filter会保留回调返回true的元素,这里我们判断当前元素既不是":"也不是空格,满足条件就留下它。
扩展性更好的写法
如果以后需要排除更多字符,直接加判断条件会显得繁琐,这时候可以把要排除的字符放到一个数组里,用includes方法来判断:
let arr = ["1", ":", "3", "0", " ", "P", "M"]; const excludedChars = [":", " "]; // 可以随时添加更多要排除的字符 arr = arr.filter(n => !excludedChars.includes(n));
这种写法更灵活,哪怕以后要排除逗号、感叹号之类的,只需要往excludedChars数组里加元素就行,不用修改过滤逻辑本身。
内容的提问来源于stack exchange,提问作者newman
相关产品推荐
相关产品推荐

