const sortAlphaNum = (a, b) => a.localeCompare(b, 'en', { numeric: true })
Использование:
['A1', 'A10', 'A11', 'A12', 'A2', 'A3', 'A4', 'B10', 'B2', 'F1', 'F12', 'F3'].sort(sortAlphaNum)
Дает:
["A1", "A2", "A3", "A4", "A10", "A11", "A12", "B2", "B10", "F1", "F3", "F12"]
Возможно, вам придется изменить аргумент 'en'
в свою локаль или определить программно, но это работает для английских строк.
Также localeCompare
не поддерживается очень последовательно, но если ваша пересылка с помощью babel, t - проблема