使用Array.filter()删除多个数组值

时间:2018-04-09 22:45:38

标签: javascript arrays

我有一个字符串数组:

let arr = ["1", ":", "3", "0", " ", "P", "M"];

我想使用一个过滤器助手删除":"和空格。这可能吗?如果我将方法链接在一起,它就有效。

arr = arr.filter(n => n !== ":").filter(n => n !== " ");

有没有一种方法可以在一个过滤方法中运行它而不链接它?我意识到我也可以使用map()完成这项工作并为字符串比较运行条件,但我很好奇是否可以使用filter()完成。

5 个答案:

答案 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 !== " ");

非常简单! :)