2016-10-16 3 views
1

localeCompare()は(-1、0、または1)を返しますが、次のコードはPCブラウザのChrome 53(期待どおり)私の携帯電話のブラウザで-8 'Androidのためのサムスンインターネット4.0、現代的な犯人になるはずです!localeCompare()はモバイルブラウザで奇妙な動作をします

また

var b = "aZ"; 
 
var a= "ab" 
 
var res = b.localeCompare(a); 
 
document.getElementById('alert').innerHTML =res;
<label id="alert">Ret</label>

フィドル: https://jsfiddle.net/4a3rwem1/5/

任意の代替JSの文字列を比較するための(おそらくより包括的な)ソリューション?

+0

を示唆(https://servo.org/ )、これについての問題を[Github](https://github.com/servo/servo/issues)で報告することができます。これは明らかにServoでは 'localeCompare'がサポートされるべきです。 – adeneo

+0

ありがとう@adeneo、私はやった! –

答えて

0

あなたはMDNのように、文字列を比較するために小さいか大きい記号を使用することができますお使いのブラウザは[サーボ]に基づいています

+(a > b) || +(a === b) - 1 

var a = "ab", 
 
    b = "aZ", 
 
    aa = a.toLowerCase(), 
 
    bb = b.toLowerCase(), 
 
    res = +(a > b) || +(a === b) - 1; 
 

 
console.log(res);

+0

それでも間違いでしょう。 -8 < 0 & 1 > 0.私はS7でテストしましたが、サムスンのブラウザを使用すると実際に-8が返されます。簡単にsolutuonサムスンでChromeを使用するか、サムスンにバグレポートを送信し、最高のために願っています。 – Keith

+0

ここであなたは8を得ますか? –

+0

どういう意味ですか、OPの質問 - > '私の携帯電話のブラウザで-8 ' – Keith