DEV Community

KooiInc
KooiInc

Posted on • Edited on

Just a Number please

Number conversion: just a number please

Converting something to a Number can be a puzzling experience in ECMAScript (ES). There are edge cases with weird results. For example Number(null) or Number([]) return 0. Trying to convert a Symbol will throw a TypeError.

So here's a small utility (a class free object oriented factory) to convert input to the numbers one expects. It returns NaN when conversion doesn't comply to our standards1 (so: [nr utility instance](null) will return NaN).

Notes:

  • most edge cases are mitigated, not all.
  • Number strings containing ',' (e.g. 0.42.toLocaleString("nl"): '0,42') will also be converted.
  • By default the function from the the factory does not include 'converting' Infinity (to ... well ... Infinity).
  • The way the function converts Booleans, Infinity or empty Strings can be modified (sometimes you may want to convert true to 1 etc.).

The embedded Stackblitz example compares the result of default (ES) conversion (Number(...)) to conversion using the utility for a number of values and shows the use of modifiers to change the way it converts things to Number.

1 Which may very well not be your standards, feel free to comment or modify the function

Top comments (0)