我们如何使用javascript在数组中使用正则表达式过滤数组中的元素?

前端之家收集整理的这篇文章主要介绍了我们如何使用javascript在数组中使用正则表达式过滤数组中的元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有两个数组:一个是正则表达式,另一个是输入.那么,在性能和可读性方面,做出类似输出的最佳方法是什么?
var regex = [
    '/rat/','/cat/'
    '/dog/','/[1-9]/'
]

var texts = [
    'the dog is hiding','cat','human','1'
]

最终的结果是

result = [
    'human'
]

好吧,我在想的是做一些像reduce这样的事情:

// loop by text
for (var i = texts.length - 1; i >= 0; i--) {
    // loop by regex
    texts[i] = regex.reduce(function (prevIoUsValue,currentValue) {
        var filterbyRegex = new RegExp("\\b" + currentValue + "\\b","g");  
        if (prevIoUsValue.toLowerCase().match(filterbyRegex)) {
            delete texts[i];
        };
        return prevIoUsValue;
    },texts[i]);
}

但是,这不可读吗?也许还有另一种我没有想到的方式.

解决方法

我可能会这样做
var regexs = [
    /rat/i,/cat/i,/dog/i,/[1-9]/i
]

var texts = [
    'the dog is hiding','1'
]

var goodStuff = texts.filter(function (text) {
    return !regexs.some(function (regex) {
         return regex.test(text);
    });
});

但实际上,除非你做了10,000次,否则这里的性能差异可以忽略不计.

请注意,这使用ES5方法,这些方法很容易调整(我知道这个单词)

原文链接:https://www.f2er.com/js/151891.html

猜你在找的JavaScript相关文章