2016-08-05 13 views
0

私の配列が["abcdefg"、 "hijklmnop"]であり、 "mnop"がこの配列の一部であるとします。どのように私はjavascriptメソッドを使用してこれを行うことができますか?文字列の配列に部分文字列を見つけるためのjavascriptメソッドはありますか?

私はこれを試してみましたが、それは動作しません:

var array= ["abcdefg", "hijklmnop"]; 
console.log(array.indexOf("mnop")); //-1 since it does not find it in the string 

答えて

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

または 'array.some()'のみが一致するかどうかを知る必要がある場合。 'some()'は、一致するとすぐに反復処理を止めることができるからです。 – Thomas

0

Javascriptがそれは簡単に既存の関数で行われますので、あなたが前に求めているものを提供していません。あなたは、個々の配列要素を反復処理し、各要素に対してindexOfを呼び出す必要があります:

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

は、あなたがそれを千の異なる方法を行うことができ、最終的にこのhttps://jsfiddle.net/uft4vaoc/4/

のように行うことができます。上と下のほとんどすべての答えが機能します。

<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

注:あなたの 'i'変数はグローバルです。 – gcampbell

+0

@gcampbellは、これらの変数がすべて「i」だけでなくグローバルになるわけではありませんか? :)ここではhttps://jsfiddle.net/uft4vaoc/6/ –

+0

を参照してください。ここでは 'i'は暗黙のグローバルです。人々は通常' for(i = 0; ')ではなく' for(var i = 0;ループ内にグローバルな 'i'変数を変更するコードがあると、問題になります。 – gcampbell

1

可能な解決策は、あなたがArray#someを使用することができますstring.match

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

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

 
console.log(res)

1

を通じて配列をフィルタリングしている:

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

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

注:機能矢印はES6の一部です/ ES2015; String#includesはES2016の一部です。

Array#some方法は、アレイ内の各アイテムに対して機能を実行する:関数は真を返すArray#some次いで、少なくとも一つのアイテムのtruthy値を返す場合。

+0

2番目のものが私のために働いてくれてありがとう –

関連する問題