2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JSの文字列比較で少しつまずいたのでメモ

Posted at

文字列比較で長さが違う場合、不思議なことが起こりました。
意外と知らなかったので記事にしてみました。

JavaScriptでは、大なり小なり演算子を用いてnumber, bigint, string型を比較できます。(大体の言語でできると思うけど)
文字列同士を文字コードで比較できるんです。便利ですね~。
そこでですね、使っていると不思議なことが起こりました。(仕様通りで何も不思議ではないんですが)

"A" < "A" // > false
"A" < "AA" // > true !?
"B" < "AA" // > false

何故だっ...何故っ...

調べても中々出て来ないし仕様書まで読みに行くもわからずじまい。(わかってから見返すとちゃんと3のcに書いてあるんですが、仕様書がむずすぎた)
そこに颯爽と現れる神ページ
javascript 文字列のまま数字を比較すると危険が危ない。
ありがたやーありがたやー

内部では大体こんな事が起こっているみたいです。

"A"[0] < "AA"[0] // "A" < "A" false(同値)なので次のインデックスを比較
"A"[1] < "AA"[1] // true
  undefined < "A"
  0 < "A".charCodeAt()
  0 < 65

長さが違う文字列を比較する場合は気をつけないといけませんね。

(公開したつもりが下書き保存してた)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?