【发布时间】: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
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
假设内部数组的第一个元素总是是一个数字,根据您想要对数组进行排序,您可以只比较内部数组中的第一个 [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 就地排序。同一个数组的返回貌似得到一个新的排序数组,这样不行。
可以使用 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>
【讨论】: