Ole*_*Ole 12 javascript sorting
W3CSchools具有以下示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
Run Code Online (Sandbox Code Playgroud)
这是在Javascript中按降序对字符串进行排序的最有效方法吗?
答案之一是使用localeCompare。只是好奇我们是否这样做reverse(),是否可以在所有地区使用(也许这是一个单独的问题-请在评论中让我知道)?
col*_*lxi 19
如果你考虑
obj.sort().reverse();
Run Code Online (Sandbox Code Playgroud)
VS
obj.sort((a, b) => (a > b ? -1 : 1))
Run Code Online (Sandbox Code Playgroud)
VS
obj.sort((a, b) => b.localeCompare(a) )
Run Code Online (Sandbox Code Playgroud)
表现优胜者是:obj.sort().reverse()。
使用10.000个元素组成的数组进行测试,
obj.sort().reverse()比obj.sort( function ),和obj.sort( function )(使用localCompare)快约100倍
此处的性能测试:https://jsperf.com/reverse-string-sort/1
如果您想对小写和大写字符串进行排序,则使用 justsort和reverse a>是错误的:Z
var arr = ["a","b","c","A","B","Z"];\r\n\r\narr.sort().reverse();\r\n\r\nconsole.log(arr)//<-- [ \'c\', \'b\', \'a\', \'Z\', \'B\', \'A\' ] wrong!!!Run Code Online (Sandbox Code Playgroud)\r\n英文字符
\n\nvar arr = ["a","b","c","A","B","Z"];\r\n\r\narr.sort((a,b)=>b.localeCompare(a))\r\n\r\nconsole.log(arr)Run Code Online (Sandbox Code Playgroud)\r\n使用locales 的特殊字符,在此示例中为 es (西班牙语)
\n\nvar arr = ["a", "\xc3\xa1", "b","c","A","\xc3\x81","B","Z"];\r\n\r\narr.sort((a, b) => b.localeCompare(a, \'es\', {sensitivity: \'base\'}))\r\n\r\n\r\nconsole.log(arr)Run Code Online (Sandbox Code Playgroud)\r\n在这种情况下的敏感性是基础:
\n\n\n\n只有基本字母不同的字符串才会被视为不相等。示例:\na \xe2\x89\xa0 b、a = \xc3\xa1、a = A。
\n