javascript - 有没有办法在 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
怎么做?还是有更好的方法而不是使用数组?谢谢!
解决方案
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.
推荐阅读
- mongodb - MongoDB 查询以查找具有共同值的字段并返回这些字段的所有详细信息
- selenium - 通过 docker-compose 在 selenium 网格上设置不同的 chrome 版本
- android - 如何将此 JSON 格式转换为模型类并使用改造将响应转换为列表
- spring-security - Spring Security 5 - 如何使用对称签名密钥?
- jar - 如何找到 Gradle 依赖项的 jar
- ios - 使 iOS 应用程序仅适用于具有 LIDAR 的设备?
- batch-file - 如何在 Cmd 中回显大于号?
- java - Kafka 生产者如何找到记录的模式 ID
- multipartfile - 如何使用这种结构(多部分文件)解析 JSON?
- pine-script - strategy.entry 多个买单