如何在javascript中使sort函数表现得像mysql order by

时间:2013-03-26 07:02:33

标签: javascript mysql sorting

我正在尝试对多维数组进行排序。 我应该把它放在javascript .sort()函数的回调上,使它的行为类似于mysql的顺序?

实施例。 使用mysql order by,result:

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

在js中使用sort函数,结果:

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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())
})

答案 1 :(得分:0)

目前还不清楚您的多个维度是什么,但您的示例看起来只是在没有区分大小写的情况下排序。

在任何情况下,为了获得自定义行为,你要做的是将函数传递给sort,它比较元素,返回-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;
});

如果您在比较函数中比较数组数组,则需要比较a和{{1}中给出的两个数组中的各个条目。 }。