Pre*_*uja 5 javascript jquery angularjs
我需要以角度,字母顺序(升序)对列表进行排序,但是如果要在列表末尾推送项目的前缀,则需要特殊字符.例如:列表应该像:
Apple
Banana
*Apple
Run Code Online (Sandbox Code Playgroud)
建议任何建议.
这是一个相当简单的解决方案。手动比较字符串时,最好使用localeCompare,即使用户的语言特定区域设置规定了不同的排序顺序,它也能正确排序。但仅靠这个功能并不能解决我们的问题。基于 @wZVanG 的巧妙答案,我们将使用\W正则表达式字符组,用字母替换字符串开头的任何非单词字符,z该字母将自动将它们排序到列表的末尾。
请注意,其中的一个缺陷是,如果您的任何单词以多个字符开头,z它们将在特殊字符之后排序。z一个简单的解决方法是向字符串添加更多s,如 中所示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'));
});
Run Code Online (Sandbox Code Playgroud)