javascript - 使用javascript对数组问题进行排序
问题描述
我正在尝试对这个数组进行排序:
var arr = ["abc", "def", "1", "6", "4", "33", "10", "]", "20", "nike", "za", "(", "ABC"];
我希望排序的结果是:
["1", "4", "6", "10", "20", "33", "ABC", "abc", "def", "nike", "za", "(", "]"]
我尝试了以下代码,但问题是关于“10”,它出现在“1”之后。我无法解决这个问题。谁能帮忙?
解决方案
似乎您可以使用options
on解决大部分问题localeCompare
。要最后对非字母数字进行排序,您可以在排序中添加一个简单的正则表达式:
var arr = ["abc", "def", "1", "6", "4", "33", "10", "]", "20", "nike", "za", "(", "ABC"];
let re = new RegExp('[0-9a-z]', 'i')
arr.sort((a,b) =>
(re.test(b) - re.test(a))
|| a.localeCompare(b, 'en', {numeric: true, caseFirst:"upper"}))
console.log(arr)
推荐阅读
- reactjs - 如何将 2021-07-14T00:00:00.000Z 转换为 YYYY-MM-DD 格式的标准日期
- python - 如何在 django 的 ajax url 中传递 kwargs?未找到带有参数 '('',)' 的 '' 的反向操作。尝试了 1 种模式:['partners/analytics/(?P
[0-9]+)/$'] - email - 第三方如何从 gmail 发送批量电子邮件?
- php - 我的子类应该从父类继承空函数吗?
- python - pandas 根据匹配记录的有序列表的 TOP 1 结果加入数据帧
- pandas - 输出问题:groupby 后只有第一行
- java - 如何嵌套 CompleteFuture 超时
- python - Len() 没有从 SQL 查询返回正确的值
- python - 如何将分辨率为“28x28”的“png”图片转换为数组(28、28、1)?
- location - 如何在不要求用户发送任何消息的情况下从电报中获取用户位置