0

我正在尝试对多维数组进行排序。我应该在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

谢谢你。

4

2 回答 2

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())
})
于 2013-03-26T07:10:28.123 回答
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;
});

如果您要比较数组数组,则在比较函数中,您将比较在和中给出的两个数组中的各个条目。ab

于 2013-03-26T07:11:13.293 回答