我正在尝试对多维数组进行排序。我应该在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 .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 中的排序是区分大小写的。为了解决这个问题,提供一个函数作为 的参数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())
})
目前尚不清楚您的多个维度是什么,但您的示例看起来只是在不区分大小写的情况下排序。
在任何情况下,要获得自定义行为,您所做的就是将一个函数传递给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
b