javascript - 按字母顺序对列表进行排序,字符在末尾

标签 javascript jquery angularjs

我需要按 Angular 、字母顺序(升序)对列表进行排序,但希望将特殊字符(如果有的话)放在列表​​末尾。 例如:列表应该是这样的:

Apple
Banana
*Apple

任何建议都会被推荐。

最佳答案

这是一个相当简单的解决方案。手动比较字符串时,最好使用 localeCompare即使用户的特定语言环境规定了不同的排序顺序,它也能正确排序。但是单靠这个功能并不能解决我们的问题。基于@wZVanG 的聪明答案,我们将使用 \W 正则表达式字符组替换任何非单词字符,在字符串的开头用字母 z 这会自动将它们排序到列表的末尾。

请注意其中的一个缺陷是,如果您的任何单词以多个 z 开头,它们将排在特殊字符之后。一个简单的解决方法是向字符串添加更多 z,如 return a.replace(/^\W+/, 'zzz').localeCompare(b.replace(/^\W+/, 'zzz').

var array = ["Banana", "Apple", "*Canana", "Blackberry", "Banana", "*Banana", "*Apple"];

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

关于javascript - 按字母顺序对列表进行排序,字符在末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31869328/

相关文章:

javascript - 调试慢速网页的工具/插件

javascript - jquery中的简单自定义事件

javascript - 可以巧妙地使用动态 html 表作为源数据吗?

javascript - AngularJS 数据插入成功但显示错误代码

AngularJS 读取配置文件的更好方法?

javascript - 转到页面并重新加载 Javascript/Angular

javascript - 每 5 秒触发鼠标单击一个按钮

javascript - mongodb 在保存数据时抛出错误(拓扑被破坏)

javascript - 如何测量两个圆之间的距离,然后检查是否发生碰撞?

javascript - 是否有一个 JS 库可以根据特异性对 CSS 选择器文本进行排序?