Javascript jquery.sort区分大小写
我想用字符串按字母顺序对数组进行排序(不考虑大写字母或小写字母)Javascript jquery.sort区分大小写,javascript,jquery,Javascript,Jquery,我想用字符串按字母顺序对数组进行排序(不考虑大写字母或小写字母) 例如,b,C,A应该变成A,b,C. 但是由于.sort是区分大小写的(使用ASCII),因此它变成了A、C、b var myArray = [ 'b', 'A', 'C' ]; myArray.sort(); console.log(myArray); 链接到小提琴: 如何修复此问题?您可以执行以下操作: myArray.sort(function(a,b){ a = a.toLowerCase(); b = b.toL
例如,b,C,A应该变成A,b,C.
但是由于.sort是区分大小写的(使用ASCII),因此它变成了A、C、b
var myArray = [ 'b', 'A', 'C' ];
myArray.sort();
console.log(myArray);
链接到小提琴:
如何修复此问题?您可以执行以下操作:
myArray.sort(function(a,b){
a = a.toLowerCase(); b = b.toLowerCase();
return a>b ? 1 : a==b ? 0 : -1;
});
您可以这样做:
myArray.sort(function(a,b){
a = a.toLowerCase(); b = b.toLowerCase();
return a>b ? 1 : a==b ? 0 : -1;
});
在排序函数中比较字符串时,需要将字符串小写,如下所示:
var myArray = [ 'b', 'A', 'C' ];
myArray.sort(function(a,b){
var alc = a.toLowerCase(), blc = b.toLowerCase();
return alc > blc ? 1 : alc < blc ? -1 : 0;
});
var myArray=['b','A','C'];
排序(函数(a,b){
var alc=a.toLowerCase(),blc=b.toLowerCase();
返回alc>blc?1:alc
引用ECMAScript 5规范:
15.4.4.11 Array.prototype.sort(comparefn)此数组的元素已排序。排序不一定是稳定的(即 比较相等(不一定保持其原始顺序)。如果 comparefn不是未定义的,它应该是一个接受两个 参数x和y,如果x
您可以在此处看到更新的fiddle:在排序函数中比较字符串时,需要将字符串小写,如下所示:
var myArray = [ 'b', 'A', 'C' ];
myArray.sort(function(a,b){
var alc = a.toLowerCase(), blc = b.toLowerCase();
return alc > blc ? 1 : alc < blc ? -1 : 0;
});
var myArray=['b','A','C'];
排序(函数(a,b){
var alc=a.toLowerCase(),blc=b.toLowerCase();
返回alc>blc?1:alc
引用ECMAScript 5规范:
15.4.4.11 Array.prototype.sort(comparefn)此数组的元素已排序。排序不一定是稳定的(即 比较相等(不一定保持其原始顺序)。如果 comparefn不是未定义的,它应该是一个接受两个 参数x和y,如果x
myArray.sort(
功能(a、b){
if(a.toLowerCase()b.toLowerCase())返回1;
返回0;
}
);
请注意,我最初写这篇文章是为了说明技术,而不是考虑性能。另请参阅answer@Ivan Krechetov以获得更简洁的解决方案。myArray.sort(
功能(a、b){
if(a.toLowerCase()b.toLowerCase())返回1;
返回0;
}
);
请注意,我最初写这篇文章是为了说明技术,而不是考虑性能。另请参考answer@Ivan Krechetov以获得更简洁的解决方案。这与规范中规定的排序函数应根据比较返回大于零值、零值或小于零值相违背。在我看来,我们不应该建议人们像这样构建懒惰的实现。@MartinJespersen:+1。(我在这里也引用了一些规范,但显然你在下面的回答中也引用了同样的内容,所以你的答案也是+1:))这与规范相违背,规范规定排序函数应根据比较返回大于零值、零值或小于零值。在我看来,我们不应该建议人们像这样构建懒惰的实现。@MartinJespersen:+1。(我在这里也引用了一些规范,但显然你在下面的回答中也引用了同样的规范,所以你的回答也是+1:)