我没有使用关联数组.我正在使用像这样的1d数组,
array("1,a","5,b","2,c","8,d","6,f");
我该如何排序这个数组?
结果应该是,f",d");
最佳答案
我将继续并假设您希望先按数字部分排序,按数字排序,然后在逗号后面的位上进行二级词法(字符串)排序.这样一个像“11,a”这样的值将在“2,a”之后结束 – 如果你只是做一个默认排序“11,a”将在“2,a”之前结束.所以:
var a = ["1,"11,"24,z",f"];
a.sort(function(a,b) {
var aparts = a.split(","),bparts = b.split(",anum = +aparts[0],// convert first part to number
bnum = +bparts[0],aletter = aparts[1],bletter = bparts[1];
if (anum === bnum)
return aletter < bletter ? -1 : aletter === bletter ? 0 : -1;
else
return anum - bnum;
});
结果:
["1,z"]