2016-08-05 8 views

Antwort

3
var array= ["abcdefg", "hijklmnop"]; 
var newArray = array.filter(function(val) { 
    return val.indexOf("mnop") !== -1 
}) 
console.log(newArray) 
+0

oder 'array.some()' wenn Sie nur wissen müssen, ob es eine Übereinstimmung gibt oder nicht. Weil 'some()' aufhören kann zu iterieren, sobald es eine Übereinstimmung hat. – Thomas

0

Javascript bieten nicht, was Sie, bevor du zu fragen, weil es mit den bestehenden Funktionen leicht gemacht wird. Sie sollten und rufen Sie individuell durch jedes Array-Element iterieren indexOf auf jedem Element:

array.forEach(function(str){ 
    if(str.indexOf("mnop") !== -1) return str.indexOf("mnop"); 
}); 
0

kann wie folgt https://jsfiddle.net/uft4vaoc/4/

Letztlich getan werden, können Sie es tausend verschiedene Arten tun. Fast alle Antworten oben und unten funktionieren.

<script> 
var n; 
var str; 
var array= ["abcdefg", "hijklmnop"]; 
//console.log(array.indexOf("mnop")); //-1 since it does not find it in the string 
for (i = 0; i < array.length; i++) { 
    str = array[i]; 
    n = str.includes("mnop"); 
    if(n === true){alert("this string "+str+" conatians mnop");} 
} 
</script> 
+0

Hinweis: Ihre 'i'-Variable ist global. – gcampbell

+0

@gcampbell würden nicht alle diese Variablen global sein, nicht nur "ich"? :) siehe hier, https://jsfiddle.net/uft4vaoc/6/ –

+0

'i' hier ist ein impliziertes globales: Leute schreiben normalerweise' for (var i = 0; 'anstatt' für (i = 0; '. Es wird ein Problem, wenn Sie Code innerhalb der Schleife haben, der auch die globale Variable "i" ändert. – gcampbell

1

eine mögliche Lösung filtert das Array durch string.match

var array= ["abcdefg", "hijklmnop"]; 
 

 
var res = array.filter(x => x.match(/mnop/)); 
 

 
console.log(res)

1

Sie Array#some verwenden können:

// ES2016 
array.some(x => x.includes(testString)); 

// ES5 
array.some(function (x) { 
    return x.indexOf(testString) !== -1; 
}); 

Hinweis: arrow Funktionen sind Bestandteil von ES6/ES2015; String#includes ist Teil von ES2016.

Array#some Die Methode führt eine Funktion gegen jedes Element in der Anordnung: wenn die Funktion gibt einen Wert truthy für mindestens ein Element, dann Array#some TRUE zurück.

+0

Die zweite funktionierte für mich, danke –

Verwandte Themen