JavaScript中如何对嵌套整数数组按指定规则排序?
嵌套数组的自定义排序方案
嘿,我来帮你搞定这个嵌套数组的排序问题!先拆解一下咱们需要的排序规则,从示例输入和输出对比就能看出来:
- 首先按照每个子数组的第一个元素降序排列(数值大的子数组排在前面)
- 当两个子数组的第一个元素相等时,按照第二个元素升序排列(数值小的子数组排在前面)
具体实现代码
在JavaScript里,我们可以直接利用数组的sort()方法,传入自定义的比较函数来实现这个逻辑:
var array = [[123, 3], [745, 4], [643, 5], [643, 2]]; array.sort(function(a, b) { // 先比较第一个元素,降序 if (a[0] !== b[0]) { return b[0] - a[0]; } // 第一个元素相等时,比较第二个元素,升序 return a[1] - b[1]; }); console.log(array); // 输出: [[745, 4], [643, 2], [643, 5], [123, 3]]
代码解释
sort()方法的比较函数接收两个参数a和b,分别代表数组中的两个子数组- 首先判断两个子数组的第一个元素是否相等:
- 如果不相等,返回
b[0] - a[0],这样数值大的第一个元素会排在前面(降序) - 如果相等,返回
a[1] - b[1],这样数值小的第二个元素会排在前面(升序)
- 如果不相等,返回
这样处理后,就能得到你想要的排序结果啦!
内容的提问来源于stack exchange,提问作者Inês
相关产品推荐
相关产品推荐

