[英]Sort two dimensional array using javascript
我想用javascript对二维数组进行排序。
我的阵列:
[
['1','6'],
['1','5'],
['2','3'],
['0','4'],
]
我的排序功能:
// 1st sort
myArray.sort( function(a, b) {
return a[0] - b[0];
});
// 2nd sort
myArray.sort( function(a, b) {
return a[1] - b[1];
});
结果 :
["2", "3"]
["0", "4"]
["1", "6"]
["1", "5"]
结果应该是:
["0", "4"]
["1", "5"] // 5 before 6 and the left column is sorted
["1", "6"]
["2", "3"]
第二种排序是覆盖第一次排序完成的排序 ,它只保留第二列的排序。
您不需要两个sort
函数,只需将它们包含在一个排序中
myArray.sort( function(a, b) {
return (a[0] - b[0]) || (a[1] - b[1]);
});
或没有大括号
myArray.sort( function(a, b) {
return a[0] - b[0] || a[1] - b[1];
});
演示
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);
您可以对任意长度的数组使用不同的方法。
该解决方案假设所有内部阵列具有相同的长度。
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(' ')));
myArray.sort((a, b) => (a[0] - b[0]) || (a[1] - b[1]));
如果第一个插槽相等,则在第二个插槽后排序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.