【问题标题】:Sorting numbers numerically [duplicate]按数字排序数字[重复]
【发布时间】:2018-04-24 13:36:29
【问题描述】:
var a = [[11,"b"], [2,"b"], [11,"a"], [1,"a"], [1,"a"]];
a.sort();
alert(JSON.stringify(a)); 

给予:

[[1,"a"],[1,"a"],[11,"a"],[11,"b"],[2,"b"]]

如何按数字排序?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    假设内部数组的第一个元素总是是一个数字,根据您想要对数组进行排序,您可以只比较内部数组中的第一个 [0]

    注意a[0] - b[0] 将按升序对元素进行排序。

    const a = [[11,"b"], [2,"b"], [11,"a"], [1,"a"], [1,"a"]];
    
    const r = a.slice().sort((a, b) => a[0] - b[0]);
    
    console.log(JSON.stringify(r));

    【讨论】:

    • Array#sort 就地排序。同一个数组的返回貌似得到一个新的排序数组,这样不行。
    【解决方案2】:

    可以使用 underscoreJs _.sortby 函数

    var a = [[11,"b"], [2,"b"], [11,"a"], [1,"a"], [1,"a"]];
    var b = _.sortBy(a,function(val){
        return val[0];
    });
    console.log(JSON.stringify(b)); 
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2011-08-31
      • 1970-01-01
      • 2018-11-02
      • 2019-12-13
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多