我有一个字符串数组:
let arr = ["1", ":", "3", "0", " ", "P", "M"];
我想使用一个过滤器助手删除":"
和空格。这可能吗?如果我将方法链接在一起,它就有效。
arr = arr.filter(n => n !== ":").filter(n => n !== " ");
有没有一种方法可以在一个过滤方法中运行它而不链接它?我意识到我也可以使用map()
完成这项工作并为字符串比较运行条件,但我很好奇是否可以使用filter()
完成。
答案 0 :(得分:4)
使用AND运算符链接条件,如下所示:
arr.filter(n => n !== ":" && n !== " ");
答案 1 :(得分:2)
您只需要使用AND逻辑运算符
来加入条件arr.filter(n => n !== ":" && n !== " ");
^^
此方法使用函数test
作为函数filter
这是正则表达式: [:\s]
let arr = ["1", ":", "3", "0", " ", "P", "M"],
result = arr.filter(s => !/[:\s]/.test(s));
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

正则表: /[:\s]/g
假设其他元素没有空格或冒号
let arr = ["1", ":", "3", "0", " ", "P", "M"],
result = arr.join('').replace(/[:\s]/g, '').split('');
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:1)
使用正则表达式
arr.filter(n => !n.match(/[:\s]/) );
它将匹配[
和]
答案 3 :(得分:1)
我宁愿通过制作黑名单数组
来做到这一点
let arr = ["1", ":", "3", "0", " ", "P", "M"],
notAllowed = [' ', ':'];
console.log(arr.filter(a => !notAllowed.includes(a)));

答案 4 :(得分:0)
arr = arr.filter(n => n !== ":" && n !== " ");
非常简单! :)