2017-01-17 4 views
0

Ich muss jedes Element eines Arrays für einen bestimmten Buchstaben überprüfen. Wenn das Element diesen Buchstaben enthält, sollte es innerhalb des Arrays bleiben, wenn es nicht entfernt werden sollte.Zurückgeben nur Elemente mit bestimmten Zeichen

derzeit kann ich Elemente entfernen, wenn sie genau sind, aber nicht sicher, wie man jeden Index jedes Elements überprüft.

var exampleList = ['alpha', 'beta','dog'] 

exampleList.filter(function(word) { 
    return (word == 'dog'); 
}) 

mein Endziel wäre so etwas.

letterToInclude = 'a' 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 

exampleList.filter(function(word) { 
    return (word == letterToInclude); 
}) 
// returned values = ['alpha', 'beta'] 
+1

'list.filter (Wort => word.includes (Brief))' –

+0

i 'wie [ 'alpha ',' beta ',' dog ']. filter (/./. test, RegExp ("a")); ', aber Sie können die Funktionen bei Bedarf auch manuell schreiben; Viele Leute verstehen nicht, generische Recycling ... – dandavis

Antwort

3

Statt == zu tun, können Sie indexOf verwenden, um festzustellen, ob letterToInclude in word auftritt.

letterToInclude = 'a' 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 

exampleList.filter(function(word) { 
    return (word.indexOf(letterToInclude) > -1); 
}); 

indexOf gibt die Position, die in letterToIncludeword auftritt; Falls es nicht gefunden wird, gibt indexOf-1 zurück.

Der Grund, warum ich word.includes(letterToInclude) nicht verwendet habe, ist nur für Kompatibilitätszwecke. includes ist ziemlich neu und isn't completely supported.

+0

danke für die Hilfe, ich muss indexOf falsch vorher verwendet haben. – Pyreal

+0

Würde das Vergleichen einer Reihe von Wörtern ähnlich sein? – Pyreal

+1

Eine gute Antwort auf diese Frage finden Sie hier: http://stackoverflow.com/questions/11076067/finding-matches-between-multiple-javascript-arrays – Santi

0

Try indexOf mit:

letterToInclude = 'a' 
 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 
 

 
console.log(exampleList.filter(function(word) { 
 
    return ~(word.indexOf(letterToInclude)); 
 
}));

+0

danke für die Eingabe. – Pyreal

1

Sie können indexOf() verwenden zu überprüfen, ob jedes Element einen bestimmten Buchstaben enthält.

var letterToInclude = 'a' 
 
var exampleList = ['alpha', 'beta', 'dog', 'mouse'] 
 

 
exampleList = exampleList.filter(function(word) { 
 
    return word.indexOf(letterToInclude) != -1 
 
}) 
 

 
console.log(exampleList)

ES6 Lösung mit String#includes(), können Sie auch match() oder test() verwenden aber die reguläre Ausdrücke nehmen.

exampleList.filter(word => word.includes(letterToInclude)) 
+0

danke für die Eingabe. – Pyreal

0

Es gut zusammen mit Unicode-Zeichen funktioniert:

var lettersToInclude = 'aa' 
 
var exampleList = ['a', 'aa','❤✓☀a★bAb', 'bbaa', 'aa☂'] 
 

 
var r = exampleList.filter(function(word) { 
 
    return (word.indexOf(lettersToInclude) > -1); 
 
}); 
 

 
console.log(r);

Verwandte Themen