我想用javascript对二维数组进行排序.
我的阵列:
[
['1','6'],
['1','5'],
['2','3'],
['0','4'],
]
Run Code Online (Sandbox Code Playgroud)
我的排序功能:
// 1st sort
myArray.sort( function(a, b) {
return a[0] - b[0];
});
// 2nd sort
myArray.sort( function(a, b) {
return a[1] - b[1];
});
Run Code Online (Sandbox Code Playgroud)
结果 :
["2", "3"]
["0", "4"]
["1", "6"]
["1", "5"]
Run Code Online (Sandbox Code Playgroud)
结果应该是:
["0", "4"]
["1", "5"] // 5 before 6 and the left column is sorted
["1", "6"]
["2", "3"]
Run Code Online (Sandbox Code Playgroud)
你的第二个排序是压倒一切的,首先做排序的排序,它是只保留第二列进行排序.
您不需要两个sort函数,只需将两者都包含在一起
myArray.sort( function(a, b) {
return (a[0] - b[0]) || (a[1] - b[1]);
});
Run Code Online (Sandbox Code Playgroud)
或没有大括号
myArray.sort( function(a, b) {
return a[0] - b[0] || a[1] - b[1];
});
Run Code Online (Sandbox Code Playgroud)
演示
var myArray = [
['1','6'],
['1','5'],
['2','3'],
['12','13'],
['0','4'],
];
myArray.sort(function(a, b) {
return (a[0] - b[0]) || (a[1] - b[1]);
});
console.log(myArray);Run Code Online (Sandbox Code Playgroud)
您可以对数组的任意长度使用不同的方法。
此解决方案假定所有内部数组的长度相同。
var array = [['1','6', '1'], ['1','5', '1'], ['1','5', '2'], ['2','3', '0'], ['0','4', '0']];
array.sort(function (a, b) {
var d;
a.some((v, i) => d = v - b[i]);
return d;
});
console.log(array.map(a => a.join(' ')));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |