const sorted = (arr, key) => arr
.map(n => [ key(n), n ])
.sort(([a], [b]) => a < b ? -1 : +(a > b))
.map(n => n[1]);
Так как сортировка сбивается из-за наличия нечисловых символов в начале некоторых строк, просто вырежем их:
const sortedArr = sorted(arr, n => n[0].replace(/^\D+/, ''));
Если же значения могут быть не только двухзначными, то сравнивать их как строки уже нельзя. Делаем из них настоящие числа, считаем сумму; если второе слагаемое отсутствует, используем первое повторно:
const sortedArr = sorted(arr, n => {
const d = n[0].match(/\d+/g);
return +d[0] + +d.at(-1);
});