Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery.sort区分大小写_Javascript_Jquery - Fatal编程技术网

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,如果xy,则为正值

您可以在这里找到完整的ECMAScript规范:并在第140页阅读有关排序的所有信息

您还可以在此处阅读有关排序方法的信息:


您可以在此处看到更新的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,如果xy,则为正值

您可以在这里找到完整的ECMAScript规范:并在第140页阅读有关排序的所有信息

您还可以在此处阅读有关排序方法的信息:

您可以在这里看到更新的fiddle:

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:)