JavaScriptのstrcmp()はありますか?

javascript strcmp string

誰もが私のためにこれを確認できますか? JavaScriptにはstrcmp()のバージョンがないので、次のように書き出さなければなりません。

(str1 <str2)? -1:(str1> str2? 1:0)

  116  10


ベストアンサー

どうですか?

str1.localeCompare(str2)

121


あなたが指摘するように、Javascriptはそれを持っていません。

簡単な検索が思いついた:

function strcmp ( str1, str2 ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Waldo Malqui Silva
    // +      input by: Steve Hilder
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: gorthaur
    // *     example 1: strcmp( 'waldo', 'owald' );
    // *     returns 1: 1
    // *     example 2: strcmp( 'owald', 'waldo' );
    // *     returns 2: -1

    return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) );
}

もちろん、必要に応じてlocaleCompareを追加することもできます。

if (typeof(String.prototype.localeCompare) === 'undefined') {
    String.prototype.localeCompare = function(str, locale, options) {
        return ((this == str) ? 0 : ((this > str) ? 1 : -1));
    };
}

そしてローカルのブラウザがそれに同梱されていても心配することなく、どこでも str1.localeCompare(str2)`を使ってください。 唯一の問題は、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#Example:_Checking_for_support_for_locales_and_options_arguments [`locales`および optionsのサポートを追加する必要があることですあなたがそれを気にかけているなら `]。

36


https://stackoverflow.com/q/14677060/1397061 [`localeCompare()`は遅い]ので、英語以外の文字列の「正しい」順序を気にしないのであれば、元のメソッドまたはきれいに見える:

str1 < str2 ? -1 : +(str1 > str2)

これは私のマシンでは `localeCompare()`より一桁速いです。

“は、答えがブール値ではなく常に数値であることを保証します。

18


var strcmp = new Intl.Collator(undefined, {numeric:true, sensitivity:'base'}).compare;

使用法: strcmp(string1、string2)

結果: 1`は文字列1が大きい、 0`は等しい、 `-1`は文字列2が大きいことを意味します。

これは `String.prototype.localeCompare`より高いパフォーマンスを持ちます

また、 `numeric:true`は論理番号比較をします。

1


どうですか?

String.prototype.strcmp = function(s){if(this <s)が-1を返す。 if(this> s)が1を返す場合0を返します。 }

次に、s1と2を比較します。

s1.strcmp(s2)

0


タイトルとURLをコピーしました