Today I Learned - Rocky Kev

TIL about the new Intl.NumberFormat browser API

POSTED ON:

TAGS:

No more stupid-ass hacks to format numbers correctly.

Numbers format

const numberFormat = new Intl.NumberFormat('ru-RU');
console.log(numberFormat.format(654321.987)); // → "654 321,987"

If you don't pass a locale, then it defaults to the users' preferences!

Currency Format

const number = 123456.789;

console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// expected output: "123.456,79 €"

// the Japanese yen doesn't use a minor unit
console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number));
// expected output: "¥123,457"

// limit to three significant digits
console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
// expected output: "1,23,000"

Units and Percentages

new Intl.NumberFormat('en-US', {
style: 'unit',
unit: 'liter',
unitDisplay: 'long'
}).format(amount);
// → '3,500 liters'


new Intl.NumberFormat("en-US", {
style: "percent",
signDisplay: "exceptZero"
}).format(0.55);
// → '+55%'

via Jordan Finneran - Never use a number or currency formatting library again!

MDN link


Related TILs

Tagged:

TIL what is npm Script

Despite their high usage they are not particularly well optimized and add about 400ms of overhead. In this article we were able to bring that down to ~22ms.

TIL fancy methods to transform Javascript Objects

You can use Object.entries(), Object.keys(), Object.fromEntries()...

TIL how to hide your JS code

ONE THING TO NOTE: Encrypting a script is stronger than obfuscation, both methods are still not adequate to protect secret content. Honestly, I don't think it's worth it on a production site, and instead just go with pure server-side if you want security. But it's fascinating.