我正在尝试对字符串数组进行排序。然而,有些是数字,有些是数字附加字母,有些是字母附加数字,有些是纯文本。例如:
array = ["100", "2A", "25", "蓝色", "1", "X2", "X1", "黄色", "2"]
我希望对列表进行排序,以便将数字和数字字符串一起显示 (1, 2, 2A),然后显示字符串数字 (X1, X2),最后显示末尾的字符串 (Blue,黄色)。
我尝试过使用array.sort()
,但这没有用。我希望得到的返回是:
["1","2","2A","25","100","X1","X2","蓝色","黄色"]
但是这会按字典顺序排序:
["1","100","2","25,"2A","蓝色","X1","X2","黄色"]
我还尝试过拆分为整数和字符串,然后排序然后组合。但这没有考虑数字字符串和字符串数字元素。
有什么办法可以实现这个功能吗?
最佳答案
您可以将没有数字的字符串移至末尾,并使用选项按字符串对其余部分进行排序。
const
noDigits = /^\D+$/g,
array = ["100", "2A", "25", "Blue", "1", "X2", "X1", "Yellow", "2"]
array.sort((a, b) =>
noDigits.test(a) - noDigits.test(b) ||
a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })
);
console.log(...array);
关于javascript - 在 JavaScript 中对整数、字符串和带有字母数字的整数数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75813461/