按数值对数组进行排序

时间:2015-01-09 13:17:22

标签: javascript jquery arrays

我有以下数组。

var arr = ["1-5", "3-6", "2-4"];

有没有办法可以这样排序:

var arr = ["1-5", "2-4", "3-6"]

我尝试使用jquery map,但因为数组的值不是Numbers。

4 个答案:

答案 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]; 
});

Example

编号

排序
arr.sort(function (a, b) {
  return +a.split('-')[1] - +b.split('-')[1];
});

Example

答案 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()

http://jsfiddle.net/qctg9cfx/

答案 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)));