在事情成功之前,一切总看似不可能。——<纳尔逊·曼德拉>
基本
Javascript
具有自带方法排序功能,可以对数组进行排序。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
array.sort()
会将每个数组项视为一个字符串,并按字母顺序对其进行排序。您也可以提供自己的自定义排序功能。
1 | ['Shanghai', 'New York', 'Mumbai', 'Buenos Aires'].sort(); |
特殊
但是,当您尝试处理像这样的非ASCII
字符数组时['é', 'a', 'ú', 'c']
,
您会得到一个奇怪的结果['c', 'e', 'á', 'ú']
。发生这种情况是因为sort
仅适用于英语。
请参见下一个示例:
1 | // Spanish |
幸运的是,有两种方法可以克服 ECMAScript Internationalization API
提供的 localeCompare
和 Intl.Collator
行为。
两种方法都有自己的自定义参数,以便对其进行配置以使其正常工作。
使用 localeCompare()
1 | ['único','árbol', 'cosas', 'fútbol'].sort(function (a, b) { |
使用 Intl.Collator()
1 | ['único','árbol', 'cosas', 'fútbol'].sort(Intl.Collator().compare); |
- 对于每种方法,您可以自定义位置。
- 根据
Firefox
,在比较大量字符串时,Intl.Collator
的速度更快。
参考
关注【公众号】,了解更多。*
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!