我有以下数组。
var arr = ["1-5", "3-6", "2-4"];
有没有办法可以这样排序:
var arr = ["1-5", "2-4", "3-6"]
我尝试使用jquery map,但因为数组的值不是Numbers。
答案 0 :(得分:3)
您可以使用sort功能
按第一个编号
排序arr.sort(function (a, b) {
// a.split('-') - split a string into an array - ['1', '5']
// a.split('-')[0] - get first element - '1'
// "+" converts string to number - 1
// the same for "b"
return +a.split('-')[0] - +b.split('-')[0];
});
按秒编号
排序arr.sort(function (a, b) {
return +a.split('-')[1] - +b.split('-')[1];
});
答案 1 :(得分:1)
使用数组排序。首先比较第一个数字。如果它们相等,则比较第二个数字..
var arr = ["1-5", "3-6", "2-4"];
var sorted = arr.sort(function(a,b){
var numsA = a.split('-');
var numsB = b.split('-');
if (numsA[0]-numsB[0] !== 0){
return numsA[0] - numsB[0];
}
return numsA[1] - numsB[1];
});
document.write(sorted);

答案 2 :(得分:0)
您可以尝试内置排序功能arr.sort()
答案 3 :(得分:0)
如果按字符串中的第一个数字排序,并且第一个数字本身可能是负数,那么更强大的解决方案可能是使用parseInt
。
var arr = ["1-5", "3-6", "-1-3", "2-4"];
arr.sort(function (a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
document.body.appendChild(document.createTextNode(JSON.stringify(arr)));