【问题标题】:how to make sort function in javascript behave like mysql order by如何使javascript中的排序功能表现得像mysql order by
【发布时间】:2013-03-15 21:38:17
【问题描述】:

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

谢谢。

【问题讨论】:

  • 搜索[javascript] string sort case

标签: javascript mysql sorting


【解决方案1】:

问题在于 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())
})

【讨论】:

  • 它有效:) 非常感谢。我没有弄清楚问题只是js区分大小写。愚蠢的我。
  • @user2020835: 没问题)) 顺便说一句,mysql 中的排序可能是任何一种方式,具体取决于您使用的排序规则。
【解决方案2】:

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

在任何情况下,要获得自定义行为,您要做的就是将一个函数传递给 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 中给出的两个数组 中的各个条目。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2019-08-18
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多