function parseItem (item) { const [, stringPart = '', numberPart = 0] = /(^[a-zA-Z]*)(\d*)$/.exec(item) || []; return [stringPart, numberPart]; } function sort (array) { return array.sort((a, b) => { const [stringA, numberA] = parseItem(a); const [stringB, numberB] = parseItem(b); const comparison = stringA.localeCompare(stringB); return comparison === 0 ? Number(numberA) - Number(numberB) : comparison; }); } console.log(sort(['A1', 'A10', 'A11', 'A12', 'A2', 'A3', 'A4', 'B10', 'B2', 'F1', 'F12', 'F3'])) console.log(sort(['a25b', 'ab', 'a37b']))
[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3] 转为 [A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]
https://www.codenong.com/4340227/