wie können wir die filter-Elemente in array mit regex in array mit javascript?

Sagen wir, ich habe zwei arrays: eins ist die regex-und die andere ist der Eingang. Was ist dann die beste Art und Weise - in Bezug auf Leistung und Lesbarkeit - etwas zu tun, wie die Ausgabe?

var regex = [
    '/rat/',
    '/cat/'
    '/dog/',
    '/[1-9]/'
]

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

das Ergebnis ist

result = [
    'human'
]

Gut, was ich dachte war, etwas zu tun, wie 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]);
}

Aber, ist das nicht lesbar? Vielleicht gibt es eine andere Möglichkeit, die ich noch nicht gedacht.

InformationsquelleAutor user1780413 | 2012-10-28
Schreibe einen Kommentar