关于localeCompare排序的问题

image.png
原数组是这样
使用a.sort(function(a, b){return a.localeCompare(b)})
的结果是这样
image.png
而我想要的理想结果应该是
image.png

localeCompare没法处理中文加数字的情况下 再按数字排 请问有什么方法处理吗?请问下各位

阅读 1.7k
1 个回答
var a = ['欧阳1','a','b','欧阳2','欧阳22','欧阳3','1100','55']
let numReg = /\d+$/;
a.sort(function(a, b){
if(numReg.test(a) && !isNaN(a)){
    return a.match(numReg)[0].localeCompare(b,'kn',{'numeric':true});
  } else {
    return a.localeCompare(b,'kn',{'numeric':true});
  }
})
// ["55", "1100", "a", "b", "欧阳1", "欧阳2", "欧阳3", "欧阳22"]

image.png

https://developer.mozilla.org...
image.png
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题