2011-10-29 8 views
1

stringTo私は私が私の学習でいくつかの助けを取得し、それが正しく動作していない私の機能についてです何かを見つけることができますことを期待していますジャバスクリプト

function contains() { 
var substr = 'bar'; 
var str = 'foobar'; 
    if (str.indexOf(substr)) { 
    // Return true if substr is a substring of str 
    return true; 
    } else { 
    // and false if substr is not a substring of str 
    return false; 
    }; 
} 

は私が得るのを助けることができます誰のために事前にありがとう学習のこのぶつかり以上。

ロブ

+3

str.indexOf(SUBSTR)> - 1(文字列が見つからない場合は-1を返します) – galchen

+6

これを短縮することができます: 'return str.indexOf(substr)> -1;'。 –

答えて

2

indexOf戻っ-1それが見つかっていない、と~-1 === 0がfalsyある場合。他のすべての数字は以外の数字は真実ですので、~で真理を返します。 ~は、~-1 === 0という興味深いプロパティを持つビット単位のNOTです。

!!はブール値に変換されます(真理値はtrueになります、falsyはfalseになります)。

だから、あなたが行うことができます:それは位置0 ATの場合

function contains() { 
    var substr = 'bar'; 
    var str = 'foobar'; 
    return !!~str.indexOf(substr); 
} 

あなたは現在(0がfalsyである)、それが見つからない場合は(-1がthruthyある)trueを返し、そしてfalseています。正規表現についてhttp://www.w3schools.com/jsref/jsref_regexp_test.asp

2

それは一種のオフトピックですが、あなたのようないくつかの正規表現を書くことができます:javascriptのtest()について

function contains() { 
    var str = 'foobar'; 
    var substrRegex = /bar/; 
    return substrRegex.test(str); 
} 

http://www.regular-expressions.info/