我有一个字符串数组,我需要在JavaScript中排序,但不区分大小写。怎么做?
3 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
在(几乎:)一个单线
["Foo", "bar"].sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
结果如何
[ 'bar', 'Foo' ]
而
["Foo", "bar"].sort();
结果是
[ 'Foo', 'bar' ]
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
myArray.sort(
function(a, b) {
if (a.toLowerCase() < b.toLowerCase()) return -1;
if (a.toLowerCase() > b.toLowerCase()) return 1;
return 0;
}
);
编辑: 请注意,我最初写这篇文章来说明技术,而不是考虑到性能。请参阅@Ivan Krechetov的答案以获得更紧凑的解决方案。
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
是时候重温这个老问题了。
您不应该使用依赖的解决方案toLowerCase。它们效率低下,根本不能用某些语言(例如土耳其语)。喜欢这个:
['Foo', 'bar'].sort((a, b) => a.localeCompare(b, undefined, {sensitivity: 'base'}))
查看文档以了解浏览器兼容性以及有关该sensitivity选项的所有信息。
添加回答
举报
0/150
提交
取消