按字母顺序比较 2 个字符串以进行排序
comparing 2 strings alphabetically for sorting purposes
我正在尝试按字母顺序比较 2 个字符串以进行排序。例如,我想有一个布尔检查,如if('aaaa' < 'ab')
.我试过了,但它没有给我正确的结果,所以我想这不是正确的语法。如何在jquery或Javascript中执行此操作?
你确实说比较是为了排序目的。然后我建议 localeCompare 代替:
"a".localeCompare("b");
它返回自 "a" < "b"
以来-1
,否则1
或0
,就像你需要 Array.prototype.sort() 一样
请记住,排序取决于区域设置。 例如,在德语中,ä
是 a
的变体,因此"ä".localeCompare("b", "de-DE")
返回-1
。在瑞典语中,ä
是字母表中的最后一个字母之一,因此"ä".localeCompare("b", "sv-SE")
返回1
。
如果没有要localeCompare
的第二个参数,则使用浏览器的区域设置。根据我的经验,这绝不是我想要的,因为那样它的排序方式将与服务器不同,服务器对所有用户都有固定的区域设置。
此外,如果您要排序的内容包含数字,您可能需要:
"a5b".localeCompare("a21b", undefined, { numeric: true })
这将返回 -1,认识到 5 作为数字小于 21。如果没有{ numeric: true }
它返回 1,因为 "2" 在 "5" 之前排序。在许多实际应用中,用户希望"a5b"出现在"a21b"之前。
让我们看一些测试用例 - 尝试在 JS 控制台中运行以下表达式:
"a" < "b"
"aa" < "ab"
"aaa" < "aab"
全部返回 true。
JavaScript 逐个字符比较字符串,字母表中的"a"在"b"之前 - 因此小于。
在您的情况下,它的工作原理是这样的 -
1 ."A AAA"<"AB"
比较前两个"A"字符 - 全部相等,让我们移动到下一个字符。
阿拉伯数字。 "aaaa" <"ab"
比较第二个字符"A"和"B" - 哎呀!"a"在"b"之前。返回 true。
请记住,像"x">"X"这样的字符串比较区分大小写
"aa" < "ab" //true
"aa" < "Ab" //false
您可以使用.toLowerCase()
进行比较,而不区分大小写。
假设我们有一个对象数组,例如:
{ name: String }
然后我们可以按如下方式对数组进行排序:
array.sort((a, b) => {
if (a.name === b.name) return 0;
return a.name > b.name ? 1 : -1;
});
注意:小心使用大写字母。您可能需要根据目的将字符串转换为小写。
"a".localeCompare("b")
实际上应该返回-1
,因为a
排序之前b
http://www.w3schools.com/jsref/jsref_localecompare.asp
- Javascript排序字符串或数字
- 根据另一个数组对数组进行排序,包括位置和字符串[ES6]
- 根据Javascript中的字符串值对数组的数组进行排序
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- 可以用javascript对包含数字的字符串进行排序
- 如何对字母数字字符串值进行排序
- AngularJS/Javascript:使用运算符对字符串进行排序
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 通过自定义字母javascript对字符串进行排序
- 按表示节号的字符串排序的下划线
- Javascript字符串排序
- 自定义javascript字符串排序比较器
- 在javascript中按两个或多个子字符串排序字符串数组
- JavaScript -按时间字符串排序
- 字符串排序在算法上是如何工作的
- 按字符串排序Javascript对象数组
- 根据子字符串中的数字对字符串排序
- Javascript货币字符串排序
- Safari浏览器Javascript数组似乎对字符串排序不正确
- 多维数组按字符串排序,而不是按值排序