我正在尝试对多维数组进行排序。 我应该把它放在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
谢谢。
答案 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}中给出的两个数组中的各个条目。 }。