JavaScript で数値形式の文字列を Array.sort() するとバグる話

Tadashi Shigeoka ·  Thu, July 1, 2021

JavaScript で数値形式の文字列を Array.sort() するとバグる話をご紹介します。

JavaScript

背景 数値形式の文字列を sort して数値の昇順にソートを期待してはダメ

['99','100','101'].sort()

// [ '100', '101', '99' ]

解決方法A Number型に変換して比較する

['99','100','101'].sort((a, b) => parseFloat(a) - parseFloat(b));

// [ '99', '100', '101' ]

解決方法B そもそもString型のまま比較しない

[99,100,101].sort((a, b) => a - b);

// [ 99, 100, 101 ]

以上、JavaScript で数値形式の文字列を Array.sort() したい、現場からお送りしました。