javascript - 在检查时再次排序二维数组排序
问题描述
我正在使用 Google 表格并尝试使用 Google Apps 脚本确认某个范围按姓氏排序(第二列)。
但是,第二列中有重复项,并且在执行检查时,数据会在检查之前重新排序,翻转姓氏匹配的行的位置,此时列表不匹配。
例如,Sheets 范围如下:
名 | 姓 |
---|---|
弗里达 | 阿科斯塔 |
秋天 | 阿科斯塔 |
埃德加 | 安徒生 |
凯拉 | 安徒生 |
拉斐尔 | 安德拉德 |
乔纳森 | 安德鲁斯 |
丹妮尔 | 射手 |
如您所见,行 {1,2} 和 {3,4} 具有相同的姓氏。但是我已经从表格中对姓氏的数据进行了排序,所以这应该是正确的。但是,当我运行代码时,它会使用并翻转它们,以便排序为:
名 | 姓 |
---|---|
秋天 | 阿科斯塔 |
弗里达 | 阿科斯塔 |
凯拉 | 安徒生 |
埃德加 | 安徒生 |
拉斐尔 | 安德拉德 |
乔纳森 | 安德鲁斯 |
丹妮尔 | 射手 |
现在,显然,它们不匹配。
如何检查二维数组是否在单个列上排序,而不会在尝试重新排序数组时发生这种情况?
function myFunction() {
const ss = SpreadsheetApp.getActive().getActiveSheet();
let a1 = ss.getRange(4,1,502,5).getValues();
let a2 = JSON.stringify(a1);
a1.sort((a, b) => a[1] > b[1] ? 1 : -1);
Logger.log(JSON.stringify(a1) == a2);
}
解决方案
解决方案:
基本上你的方法,但没有? 1 : -1
:
function myFunction() {
const ss = SpreadsheetApp.getActive().getActiveSheet();
let a1 = ss.getRange(4,1,502,5).getValues();
let a2 = JSON.stringify(a1);
a1.sort((a, b) => a[1] > b[1] );
console.log(a1);
}
或者:
function myFunction() {
const ss = SpreadsheetApp.getActive().getActiveSheet();
let a1 = ss.getRange(4,1,502,5).getValues();
let a2 = JSON.stringify(a1);
a1.sort((a, b) => a[1].localeCompare(b[1]));
console.log(a1);
}
参考:
推荐阅读
- c# - ASP.NET 中的日期时间选择器格式
- python - 格兰杰的 MaxLag
- java - Java - 通过运行时执行 OpenSSL 命令时出错
- javascript - 无法使用 ionic 将帖子分享到 Facebook
- python - PyQt TableView 将图标对齐到中心
- linear-regression - 如何使用stata svy etregress postestimation假设检查
- python - Python selenium xpath 后代
- python - 根据 ForeignKey 返回结果
- php - 层层隐藏生产服务器上的错误
- python - 无法从 Python 脚本运行 Git 命令