javascript - 在 JavaScript 中对整数、字符串和带有字母数字的整数数组进行排序

标签 javascript arrays string sorting numbers

我正在尝试对字符串数组进行排序。然而,有些是数字,有些是数字附加字母,有些是字母附加数字,有些是纯文本。例如:

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/

相关文章:

javascript - Q : How to display an image generated in Unity on a phone controller using HappyFunTimes?

javascript - Highchart 在值工具提示后添加文本

javascript - 如何在reactjs中选择默认复选框

javascript - javascript 中的数组和对象

c - 我在代码中遇到问题,应该找到字符串中子字符串的出现次数

编译错误,成员不是 union 体的成员 |使用指针/结构

javascript - PHP 如果基于输入信息的函数不起作用

javascript - 如何使用angular material api服务?

c - 冒泡排序选项。需要添加一个打印气泡位移的(print_bubble)程序

javascript - 使用 .split() 将句子(带逗号)添加到数组中