如何在jquery中使用字符串数组对数字进行排序

时间:2017-05-30 12:33:14

标签: jquery

如何使用jquery

中的字符串数组对数字进行排序
["8h 40m", "5h 0m", "8h 55m", "5h 10m", "13h 0m", "3h 50m", "23h 30m", "3h 0m", "10h 55m", "9h 30m", "1h 25m", "1h 25m", "1h 25m", "1h 20m", "13h 30m", "5h 55m", "13h 10m", "10h 25m", "14h 50m", "1h 30m", "1h 40m", "1h 40m", "1h 40m", "9h 10m", "13h 15m"]

请建议。

var _sortDurationArray = _durationArray.sort(function (a, b) {
                  var contentA =parseInt(a);
                  var contentB =parseInt(b);
                  return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
               })

输出:

["1h 40m", "1h 25m", "1h 40m", "1h 20m", "1h 40m", "1h 25m", "1h 25m", "1h 30m", "3h 0m", "3h 50m", "5h 10m", "5h 0m", "5h 55m", "8h 40m", "8h 55m", "9h 30m", "9h 10m", "10h 25m", "10h 55m", "13h 30m", "13h 10m", "13h 0m", "13h 15m", "14h 50m", "23h 30m"]

必需的输出是。

["1h 20m", "1h 25m", "1h 25m", "1h 25m", "1h 30m", "1h 40m", "1h 40m","3h 0m", "3h 50m", "5h 0m", "5h 10m", "5h 55m", "8h 40m", "8h 55m", "9h 10m", "9h 30m", "10h 55m", "10h 25m", "13h 0m", "13h 10m", "13h 15m", "13h 30m", "14h 50m", "23h 30m"]

2 个答案:

答案 0 :(得分:2)

基本上你需要通过转换下面的时间值来比较分钟值,然后需要比较它们:

var _durationArray = ["8h 40m", "5h 0m", "8h 55m", "5h 10m", "13h 0m", "3h 50m", "23h 30m", "3h 0m", "10h 55m", "9h 30m", "1h 25m", "1h 25m", "1h 25m", "1h 20m", "13h 30m", "5h 55m", "13h 10m", "10h 25m", "14h 50m", "1h 30m", "1h 40m", "1h 40m", "1h 40m", "9h 10m", "13h 15m"]


var _sortDurationArray = _durationArray.sort(function(a, b) {
  var contentA = getMin(a);
  var contentB = getMin(b);
  return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
});

console.log(_sortDurationArray);

function getMin(time) {
  var timearr = time.split(" ");
  var hr = timearr[0].replace("h", "");
  var min = timearr[1].replace("m", "");

  var totMin = parseInt(hr) * 60 + parseInt(min);
  return totMin;
}

答案 1 :(得分:0)

简短但有效:

arr.sort(function(a,b){
    a = a.split(' ').map(e => parseInt(e));
    b = b.split(' ').map(e => parseInt(e));

    return a[0] != b[0] ? a[0] - b[0] : a[1] - b[1]
})