2016-09-28 9 views
0

まずはJavaScriptに少し慣れていますが、それほど多くはありません。JavaScript:文字を比較するときにcharCodeを使用する利点はありますか?

今日では、これらのコードを見て:

if (stringToSearch[i].charCodeAt(0) === codeToSearch) { 

文字列のcharCodeAt()メソッドが検索チャーと現在チャーを比較するために使用されます。

ここでは、関数の完全なコード:

function getOccurences (stringToSearch, charToSearch) { 
 
    var ret = 0; 
 
    var codeToSearch = 0; 
 
    var i; 
 
    
 
    stringToSearch = stringToSearch.toUpperCase(); 
 
    codeToSearch = charToSearch.toUpperCase().charCodeAt(0); 
 

 
    for (i = 0; i < stringToSearch.length; i++) { 
 
    if (stringToSearch[i].charCodeAt(0) === codeToSearch) { 
 
     ret++; 
 
    } 
 
    } 
 
    
 
    return ret; 
 
}

私は直接文字を比べているだろう。 charCodeAt()を使用しないでください。

だけ...

stringToSearch[i] === charToSeach 

は、私の知る限りでは、コンピュータはとにかく数字だけを比較します。文字をUTFコードに変換します。これらの数値をお互いに控除し、結果がゼロになったかどうかを確認します。

そこで、私の質問:

charCodeAt()の使用量は任意の理にかなっていますか?

文字比較と比べて、直接的なcharCode比較を優先する利点がありますか?

答えて

2

charCodeは、文字を増減する必要があるときに役立ちます。
など。変数xにcharCode( 'a')があれば、x ++を使ってインクリメントすることができます。
しかし、 'a'を保存した場合は、算術演算を実行できません。
したがって、文字を増減する必要がある場合はcharCodeAt(number)が使用されます。

+0

ただ、思った:しかし、文字列を使用することはできないあなたはおそらくのようなもので、ネイティブの文字列メソッドに委譲することで、コードのうち、より多くのパフォーマンスをひねり出すだろう、と述べた

同じ理由で[​​indexNumber]?文字列を上向き/下向きにすることができます。 – mewi

2

私の直感は、タイプ変換とそのような関数呼び出しのフープを実行すると、がヒットになると思います。

function countCaseInsensitiveOccurrences(haystack, char) { 
    haystack = haystack.toUpperCase(); 
    char = char.toUpperCase()[0]; 
    var count = 0, pos = -1; 
    while ((pos = haystack.indexOf(char, pos + 1)) !== -1) { 
    count++; 
    } 
    return count; 
} 
関連する問題