在Javascript中排序数组..资本,资本,小,小订单

时间:2016-05-25 12:11:45

标签: javascript

var temp=["dy34","fd","FD","av","AV","12esu",1,"DY34",1011,123,101];

当我对数组进行排序时,我得到的是:

result = [1,101,123,1011,"12esu","AV","av","dy34","DY34","FD","fd"]

但我需要这样的结果:

result = [1,101,123,1011,"12esu","AV","av","DY34","dy34","FD","fd"]

1 个答案:

答案 0 :(得分:2)

似乎你想要

  1. 以数字形式比较数组项目
  2. 如果这些是相同的,请用字符串化不区分大小写的形式比较它们
  3. 如果这些也相同,请比较原始表格。
  4. 
    
    /* isNumeric function taken from http://stackoverflow.com/a/1830844/1529630 */
    var isNumeric = n => !isNaN(parseFloat(n)) && isFinite(n),
        numberForm = val => isNumeric(val) ? Number(val) : Infinity,
        iStringForm = val => String(val).toUpperCase();
    
    var temp = ["dy34","fd","FD","av","AV","12esu",1,"DY34",1011,123,101];
    for (var i = 0; i < temp.length; ++i)
      temp[i] = [numberForm(temp[i]), iStringForm(temp[i]), temp[i]];
    temp.sort(function(a, b) {
      for (var i = 0; i < 3; ++i) {
        if (a[i] < b[i]) return -1;
        if (a[i] > b[i]) return +1;
      }
      return 0;
    });
    for (var i = 0; i < temp.length; ++i)
      temp[i] = temp[i][2];
    
    console.log(temp);
    &#13;
    &#13;
    &#13;