2016-11-08 14 views
0

私はそうでない複数の文字列の文字列を検索したい、それはそこにそれらのいずれかを発見した場合trueを返し、falseと思い、このような何か:文字列内の文字列の配列を見つけるには?

var s = "thing1 thing2" 
s.contains(["thing1","thing44444"]) // true 
s.contains("1") // true 
s.contains("x") // false 

は、ここで私がこれまで持っているものだが、それはなってきましたメシエとは実際には動作しません:それは何も見つからないままforループを通してそれを作る場合

String.prototype.contains = function(xv) { 
    var t = this 
    if(xv.isString()){ // isString/isArray are functions I made elsewhere in my code, they work. 
     if(t.indexOf(xv) > -1) 
      return true; 
    } else if(xv.isArray()) { 
     if(xv.contains(t)){ 
      return true 
     } 
     for(v in xv){ 
      if(t.indexOf(xv[v]) > -1){ 
       return true 
      } 
     } 
    } else { 
     return false 
    } 
} 

今のところ、それはundefinedを返します。私はforループの後にreturn falseを持っていましたが、終了したのはforです。

これを行う簡単な方法があるように感じます。

私は既にHow do you search multiple strings with the .search() Method?を試しましたが、.search()に配列を送信できませんでした。私が使用している

フレームワーク:角度1.5.8、jqueryの1.11.1

+0

を使用することができますforループですが、終了する前に実行されます。 "これはあなたの例のコードでは不可能です。 – zzzzBov

+0

組み込みのオブジェクトのプロトタイプを変更することを再考するか、少なくとも正しくポリ充填していることを確認することをお勧めします。 [なぜネイティブオブジェクトを拡張するのが悪いの?](http://stackoverflow.com/q/14034180/215552)も参照してください。例えば、['Array.isArray'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)はJavaScriptの最近のバージョンではすでに関数ですが、Angular既に['angular.isString()'](https://docs.angularjs.org/api/ng/function/angular.isString)... –

+0

@MikeMcCaughanあなたが引用した最初の回答から: "独自のコードでのみ使用されるオブジェクトは問題ありません。私は参考に感謝します。ここにたくさんの良い情報があります。ありがとう、兄弟。 –

答えて

4

あなたは、私が後にfalseを返していた」Array.someString.indexOfまたはString.includes

var s1 = "thing1 thing2"; 
 
var s2 = "Hello Kitty"; 
 

 
var r1 = ["thing1","thing44444"].some(x => s1.includes(x)); 
 
var r2 = ["Travis","Heeeeeeter"].some(x => s2.includes(x)); 
 

 
console.log(r1, r2); // true, false

関連する問題