function sortArrays(arrays) { // 按第一个元素排序 arrays.sort((a, b) => a[0] - b[0]);
let sorted = false; while(!sorted) { sorted = true; for(let i = 0; i < arrays.length - 1; i++) { // 如果相邻两个数组的第一个元素相同 if(arrays[i][0] === arrays[i+1][0]) { // 就按第二个元素排序 if(arrays[i][1] > arrays[i+1][1]) { let temp = arrays[i]; arrays[i] = arrays[i+1]; arrays[i+1] = temp; sorted = false; } } } }
return arrays; }
// 测试 let arrays = [[1, 4], [1, 3], [1, 5], [2, 1]]; console.log(sortArrays(arrays)); // [[1, 3], [1, 4], [1, 5], [2, 1]]
主要思路是:
首先按第一个元素排序
检查相邻两个数组的第一个元素是否相同,如果相同则按第二个元素排序
不断重复此过程,直到排序完成这个算法同样适用于任意多维数组的排序。