首页 > 解决方案 > 有没有办法在 javascript 中对多数组进行排序,例如 ASC 中的第 1 列和 DESC 顺序中的第 2 列?

问题描述

下面的多数组是随机排序的:

let arr = [[3, "C"], [2, "B"], [3, "Q"], [1, "A"], [2, "P"], [1, "O"]];

目的是将其排序为:

arr = [[1, "O"], [1, "A"], [2, "P"], [2, "B"], [3, "Q"], [3, "C"]];

被视为一张桌子:

/*
col 1 | col 2         col 1 | col 2
  3   |   C             1   |   O    ˄
  2   |   B        |    1   |   A    ¦
-------------      |  -------------
  3   |   Q    =˃  |    2   |   P    ˄
  1   |   A        |    2   |   B    ¦
-------------      |  -------------
  2   |   P        ˅    3   |   Q    ˄
  1   |   O             3   |   C    ¦
*/

从另一个角度来看,我想实现 SQL 查询中的内容,例如:

SELECT * FROM table
ORDER BY column1 ASC, column2 DESC

怎么做?还是有更好的方法而不是使用数组?谢谢!

标签: javascriptarrayssorting

解决方案


const array = [[3, "C"], [2, "B"], [3, "Q"], [1, "A"], [2, "P"], [1, "O"]];

array.sort((a, b) => compareNumbers(a[0], b[0]) || compareStr(a[1], b[1]));

function compareNumbers(a, b) {
  return a - b;
}

function compareStr(a, b) {
  if (a>b) {
    return -1;
  }
  if (a<b) {
    return 1;
  }
  return 0;
}
console.log(array)
// existing sort function can also be converted to a function. Here, just to show sort() and comparision implementation.


推荐阅读