使用javascript对数组进行排序包括字母和数字

时间:2018-01-24 06:19:18

标签: javascript node.js

$.ajax({
    url: '/seatlt',
    type: 'POST',
    dataType: 'JSON',
    data: data,
    async: true,
    crossDomain: true,
    success: function(res) {
        $.each(res, function(i, v) {
            $.each(v, function(j, w) {
                var ggg = w.name;                                    
                vvv.push(ggg);
            })
        })
    }
})

在console.log(vvv)中,输出为:

[" 22"," A"," 23"," B"," 24",& #34; C"," 25"," D"," 26"," E"," 27&# 34;," F"," 28"," 29"," 30"," 31",&# 34; 10"," 32"," 11"," 33"," 12"," 34&#34 ;," 13"," 35"," 14"," 15"," 16",&#34 ; 17"," 18"," 19"," 1"," 2"," 3" ," 4"," 5"," 6"," 7"," 8"," 9"," 20"," 21"]。

但我希望输出为:

[" A"," B"," C"," D"," E",& #34; F"," 1"," 2"," 3"," 4"," 5&# 34;," 6"," 7"," 8"," 9"," 10",&# 34; 11"," 12"," 13"," 14"," 15"," 16&#34 ;," 17"," 18"," 19"," 20"," 21",&#34 ; 22"," 23"," 24"," 25"," 26"," 27" ," 28"," 29"," 30"," 31"," 32"," 33"," 34"," 35"]。

3 个答案:

答案 0 :(得分:1)

我写盲,但这应该可以解决问题。

res.sort(function(a, b) {
  var AisNumber = a % 1 === 0;
  var BisNumber = b % 1 === 0;
  if (AisNumber && BisNumber) { 
    return Number(a) - Number(b);
  } else if (AisNumber && !BisNumber) {
    return 1;
  } else if (!AisNumber && BisNumber) {
    return -1;
  } else {
    if (a < b) {
      return -1;
    } else if (a > b) {
      return 1;
    } else {
      return 0;
    }
  }
});

答案 1 :(得分:0)

对数组进行排序?

vvv.sort();

这对我有用。但是你也可以对这些数字进行排序,例如:

var arr = ["A", "9", "B", "1", "8", "9", "C", "10", "11", "17", "20", "21", "30", "31", "35"];
for (var i = 0; i < arr.length; i++) {
    try{
        arr[i] = eval(arr[i]);
    }
    catch (err) {
        //ignore
    }
}
arr.sort();
alert(arr);

答案 2 :(得分:0)

您可以检查数字并在底部对其进行排序,其余值排在最前面。

return isNumber(a) - isNumber(b) || a - b || a > b || -(a < b);
//     ^^^^^^^^^^^^^^^^^^^^^^^^^                                check group
//                                  ^^^^^                       order numbers
//                                           ^^^^^^^^^^^^^^^^^  order strings

&#13;
&#13;
var array = ["22", "A", "23", "B", "24", "C", "25", "D", "26", "E", "27", "F", "28", "29", "30", "31", "10", "32", "11", "33", "12", "34", "13", "35", "14", "15", "16", "17", "18", "19", "1", "2", "3", "4", "5", "6", "7", "8", "9", "20", "21"];

array.sort(function (a, b) {
    function isNumber(v) { return (+v).toString() === v; }
    return isNumber(a) - isNumber(b) || a - b || a > b || -(a < b);
});

console.log(array)
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;