2017-07-05 1 views
0

ich die folgende Funktion in Maschinenschrift geschrieben haben:Javascript Hinzufügen von Variablen zu einem regulären Ausdruck

public searchPosts(keyword ? : string): Post[] { 
    return this._posts.filter(function(post) { 
    if (post.title.search(new RegExp('money', 'gi')) >= 0) { 
     return post; 
    } 
    }); 
} 

Es funktioniert nur gut, aber, ich brauche es ein wenig dynamisch zu machen, so dass anstelle von fest codierten Wert, dh Geld, ich kann meine Schlüsselwortvariable in RegExp setzen (new RegExp(keyword, 'gi')). Aber das bringt nichts auch nur für "Geld" als Schlüsselwort zurück.

Irgendwelche Ideen, was ich hier falsch mache?

+0

Ersetzen Sie "gi" mit "keyword"? --- Hmm. – evolutionxbox

+1

Warum geben Sie den Beitrag im Filter zurück? Ich habe es mit ES6 funktionieren '(keyword = '') => this._posts.filter (post => post.title.search (neue RegExp (Stichwort, 'gi'))> = 0)' – evolutionxbox

+0

ersetzen nicht Arbeit. Ich gebe den Beitrag zurück, der den Kriterien entspricht? –

Antwort

2

Dies ist, wie es

var keyword = '345'; 
 
    var f = ['1234', '3456'].filter(function(post) { 
 
    return (post.search(new RegExp(keyword, 'gi')) >= 0); 
 
    }); 
 
    
 
    console.log(f);

var posts = [{title: '1234'}, {title: '3456'}]; 
 

 
function searchPosts (keyword) { 
 
    return posts.filter(function(post) { 
 
    return (post.title.search(new RegExp(keyword, 'gi')) >= 0); 
 
    }); 
 
} 
 

 
console.log(searchPosts('345'));

Wenn dies nicht funktioniert, ist das Problem woanders arbeiten soll Dies ist Ihre Funktion in reiner JS ist ;].

+0

'' 'public searchPosts (keyword ?: string): Beitrag [] { return this._posts.filter (funktion (nach) { return (post.title.search (new RegExp (Schlüsselwort, 'gi'))> = 0); }); } '' 'Was fehlt mir hier? –

+0

'' 'public searchPosts (keyword ?: string): Beitrag [] { return this._posts.filter (funktion (post) { return (post.title.search (neue RegExp ('money', 'gi'))> = 0); }); } '' 'das gibt mir das gewünschte Ergebnis, aber sobald ich den Suchbegriff mit Schlüsselwort ersetze, funktioniert es nicht. Sogar console.log für Schlüsselwort ist wie erwartet. :/ –

+0

Ich habe meine Antwort bearbeitet. Deine Funktion scheint in Ordnung zu sein. Wie Sie in meiner Antwort sehen können, wenn Sie der Funktion eine Zeichenkette übergeben, gibt sie das gewünschte Ergebnis zurück, so dass es gut funktioniert. Damit kann ich dir helfen. Wenn Sie den Code im Plunker bereitstellen, können Sie mehr versuchen. –

Verwandte Themen