2017-06-12 29 views
-2

配列内に2つ以上の単語が出現した場合は、その単語をループから除外しようとしています。 文字列の配列が文字列と一致する

は、私は、文字列を持っていると言う I was following someone the other day that looked a bit grumpy

私は、文字列の配列があります

[ 
    "followback", 
    "followers", 
    "grumpy cat", 
    "gamergate", 
    "quotes", 
    "facts", 
    "harry potter" 
] 

が、私はそれは文句を言わないだけ一致します.indexOfによってピックアップされるフレーズgrumpy catを一致させることができます方法がありますgrumpy

const yourstring = 'I was following someone the other day that looked a bit grumpy' 
 

 
const substrings = [ 
 
    "followback", 
 
    "followers", 
 
    "grumpy cat", 
 
    "gamergate", 
 
    "quotes", 
 
    "facts", 
 
    "harry potter" 
 
] 
 

 
let len = substrings.length; 
 

 
while(len--) { 
 
    if (yourstring.indexOf(substrings[len])!==-1) { 
 
    console.log('matches: ', substrings[len]) 
 
    } 
 
}

+0

あなたは 'grumpy'または' cat'をMACHしたいですか? – baao

+1

それでは、一匹の紐で「くそった猫」を一緒に使うのはどうですか?なぜあなたの配列に2つの別々の単語として保存しないのですか? – trincot

+0

単語_前提条件が2回以上出現した場合、何を伝えようとしていますか? – baao

答えて

2

あなただけのforループを行うことができます。

for (var x = 0; x<substrings.length; x++) { 
    if (substrings[x] == 'your string') { 
     // do what you want here 
    } 
} 

あなたは、正確な文字列を探しているなら、単に上記やるとそれが動作するはずです。配列の文字列に部分文字列を一致させる場合、IndexOfが機能します。しかし、私はループと正確に一致

0

のためにあなたがsplit(' ')を使って、単語の配列に部分文字列を分割して、以下のいずれかのワードをincludesメソッドを使用してyourstringに含まれているかどうかを確認することができますに固執するでしょう。

const yourstring = 'I was following someone the other day that looked a bit grumpy'; 
 

 
const substrings = [ 
 
    "followback", 
 
    "followers", 
 
    "grumpy cat", 
 
    "gamergate", 
 
    "quotes", 
 
    "facts", 
 
    "harry potter" 
 
]; 
 

 
console.log(substrings.filter(x => x.split(' ').some(y => yourstring.includes(y))));

ここでは、RAMDAライブラリを使用して同じことを行うことができます方法は次のとおりです。

const yourstring = 'I was following someone the other day that looked a bit grumpy'; 
 

 
const substrings = [ 
 
    "followback", 
 
    "followers", 
 
    "grumpy cat", 
 
    "gamergate", 
 
    "quotes", 
 
    "facts", 
 
    "harry potter" 
 
]; 
 

 
const anyContains = x => R.any(R.flip(R.contains)(x)); 
 

 
console.log(R.filter(R.compose(anyContains(yourstring), R.split(' ')), substrings));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.24.1/ramda.min.js"></script>

関連する問題