JavaScript Bug When Using Array.sort() on Numeric String Formats

Tadashi Shigeoka ·  Thu, July 1, 2021

I’ll introduce the bug that occurs when using Array.sort() on numeric string formats in JavaScript.

JavaScript

Background: Don't Expect Numeric Ascending Sort When Sorting Numeric String Formats

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

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

Solution A: Convert to Number Type for Comparison

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

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

Solution B: Don't Compare as String Type in the First Place

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

// [ 99, 100, 101 ]

That’s all from the Gemba.