Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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中的排序函数的行为类似于mysql order by_Javascript_Mysql_Sorting - Fatal编程技术网

如何使javascript中的排序函数的行为类似于mysql order by

如何使javascript中的排序函数的行为类似于mysql order by,javascript,mysql,sorting,Javascript,Mysql,Sorting,我正在尝试对多维数组进行排序。 我应该在javascript.sort()函数的回调上添加什么,使其行为类似于mysql order by 例如。 使用mysql order by,结果: acx, acx abx, acx acx, S&P/ASX 20 在js中使用排序函数,结果: S&P/ASX 20, acx, acx abx, acx acx 谢谢。问题是JS中的排序区分大小写。为了解决这个问题,提供一个函数作为参数,它应该比较字符串的大小写版本(或大小写版本)

我正在尝试对多维数组进行排序。 我应该在javascript.sort()函数的回调上添加什么,使其行为类似于mysql order by

例如。 使用mysql order by,结果:

acx, 
acx abx,
acx acx,
S&P/ASX 20
在js中使用排序函数,结果:

S&P/ASX 20,
acx, 
acx abx,
acx acx

谢谢。

问题是JS中的排序区分大小写。为了解决这个问题,提供一个函数作为参数,它应该比较字符串的大小写版本(或大小写版本)

function cmp(x, y) {
    return x > y ? 1 : x < y ? -1 : 0;
}

a = ["S&P/ASX 20","acx", "acx abx","acx acx"]

a.sort(function(x, y) {
    return cmp(x.toUpperCase(), y.toUpperCase())
})
函数cmp(x,y){
返回x>y?1:x
不清楚您的多维度是什么,但您的示例看起来只是在不区分大小写的情况下进行了排序

在任何情况下,要获得自定义行为,您要做的是将一个函数传递给比较元素,返回-1、1或0。例如:

yourArray.sort(function(a, b) {
    a = a.toLowerCase();
    b = b.toLowerCase();
    if (a < b) {
        return -1;
    }
    if (a > b) {
        return 1;
    }
    return 0;
});
yourray.sort(函数(a,b){
a=a.toLowerCase();
b=b.toLowerCase();
if(ab){
返回1;
}
返回0;
});

如果要比较数组的数组,在比较函数中,可以比较
a
b

中给出的两个数组中的各种条目,搜索
[javascript]字符串排序大小写
。非常感谢。我没有发现问题只是js区分大小写。愚蠢的我。@user2020835:没问题)顺便说一句,mysql中的排序可能是任意一种,这取决于您使用的排序规则。