按值对数组排序

Sort an array by its values

我有以下数组。

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

有没有办法像这样排序:

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

我试过 jquery 映射但不能,因为数组的值不是数字。

你可以使用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

您可以试试内置的排序功能arr.sort()

http://jsfiddle.net/qctg9cfx/

使用数组排序。首先比较第一个数字。如果它们相等,则比较第二个数字..

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

如果按字符串中的第一个数字排序,并且如果第一个数字本身可能为负数,则更可靠的解决方案可能是使用 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)));