Сравнение строк в JavaScript с учётом чисел

Обычно, когда строки сортируешь, и в них есть числа, то стандартная лексикографическая сортировка работает глупо:

> ['f10.png', 'f1.png', 'f2.png'].sort()
['f1.png', 'f10.png', 'f2.png']

Очевидно, что я хочу, чтобы f10.png шёл после f2.png, а не до.

Оказывается, что у метода сравнения строк — localeCompare — есть дополнительный параметр, в котором можно задать более логичное поведение.

> ['f10.png', 'f1.png', 'f2.png']
>   .sort((a, z) => a.localeCompare(z, 'en', { numeric: true }))
['f1.png', 'f2.png', 'f10.png']

Третий параметр аналогичен options из Intl.Collator, и там есть ещё всякое помимо numeric.