javascript - 最后以特殊字符排序

标签 javascript

我查看了一个旧线程,由于特殊情况“zz”、“ZZZ”等,我得到的答案实际上不起作用。

array.sort(function(a,b) {
     return a.replace(/^\W+/, 'z').localeCompare(b.replace(/^\W+/, 'z'));
});

所以,我想出了我自己的调整版本,它是:

array.sort(function(a,b) {
     return a.replace(/^\W+/, 'Ω').localeCompare(b.replace(/^\W+/, 'Ω'));
});

但我觉得这是一个非常糟糕的做法,因为它是一种黑客行为。有没有更简单但更正确的方法来做到这一点?

输入:

 ['111', '-213', '_1231', 'aasda', 'zzadsa', '<da>']

预期输出:

 ['111', 'aasda', 'zzadsa', '-213', '_1231', '<da>']

最佳答案

您应该使用最大代码单位,而不是使用任意“大”字符值,例如 ZΩ:

 var last = String.fromCharCode(0xFFFF);
 function ignoreSpecialChars(x) {
     return x.replace(/\W/g, last);
 }
 function compare(a, b) {
     a = ignoreSpecialChars(a);
     b = ignoreSpecialChars(b);
     return (a>b)-(b>a);
 }

 array.sort(compare);

关于javascript - 最后以特殊字符排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39515961/

相关文章:

javascript - Angular - FormArray,如何重置 formArray 的特定字段?

javascript - ES6 : destructuring an object with symbols as keys

javascript - "Responsive"Chart.js图表​​比包含窗口高

javascript - 我该如何解决这个错误: Unexpected token

javascript - 防止计算时代的负数

javascript - 解释一下可滚动表格的代码

javascript - 单选一个表上的项目

javascript - $.getJSON 函数与 json 对象

javascript - D3.JS 数据 map 国家名称变量

javascript - Owl Carousel 2 自定义导航