Javascript术语-工作表是对象吗?

Javascript术语-工作表是对象吗?,javascript,sorting,google-apps-script,Javascript,Sorting,Google Apps Script,我使用GAS已经有一段时间了,但是没有很强的Javascript背景,在忽略大小写的情况下,我遇到了按字母顺序排序的问题。我做了一些调查,并根据SO和其他一些来源中的其他公开答案整理了这个方法。假设我的工作表被命名为“Sheet1”、“my Other Sheet”、“The 3rd Sheet”、“another Sheet”、“By gosh Other one?”。我希望订购我的床单: “另一张”,“天哪,另一张?”,“我的另一张”,“第1张”,“第3张” var spsheet=Spre

我使用GAS已经有一段时间了,但是没有很强的Javascript背景,在忽略大小写的情况下,我遇到了按字母顺序排序的问题。我做了一些调查,并根据SO和其他一些来源中的其他公开答案整理了这个方法。假设我的工作表被命名为“Sheet1”、“my Other Sheet”、“The 3rd Sheet”、“another Sheet”、“By gosh Other one?”。我希望订购我的床单: “另一张”,“天哪,另一张?”,“我的另一张”,“第1张”,“第3张”

var spsheet=SpreadsheetApp.getActive()
var sheets=spsheet.getSheets()
变量名称=[]
表.forEach(功能(项目){
name.push(item.getName())
})
var sortednames=names.sort(函数(a,b){
返回((a.toUpperCase()>b.toUpperCase())?1:-1)
{)
我误解了吗?我认为toUpperCase()调用会暂时更改每个名称的大小写,只是为了排序,然后按字母顺序对我的工作表名称进行排序,然后返回忽略大小写的已排序工作表列表。但是,实际输出是:
[天哪,另一张,第1张,第3张,另一张,我的另一张]

我似乎是先按字母顺序对大写的表格进行排序,然后再按小写的顺序进行排序。我在这方面做得对吗?还是完全误解了什么?

试试这个:

function sortSheetsByNameCaseInsensitive() {
  var ss=SpreadsheetApp.getActive();
  var shts=ss.getSheets();
  var nameA=shts.map(function(sh,i){return sh.getName()});
  var nameB=shts.map(function(sh,i){return sh.getName().toLowerCase()});
  var nameC=nameB.slice();
  nameC.sort();
  for(var i=0;i<nameC.length;i++) {
    var sh=ss.getSheetByName(nameC[i]);
    var idx=nameB.indexOf(nameC[i]);
    sh.setName(nameA[idx]);
    Sheets.Spreadsheets.batchUpdate({requests:[{"updateSheetProperties":{"properties":{"sheetId":sh.getSheetId(),"index":i+1},"fields":"index"}}]}, ss.getId());
  }
}
函数sortsheetsbyname不敏感(){
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var nameA=shts.map(函数(sh,i){return sh.getName()});
var nameB=shts.map(函数(sh,i){return sh.getName().toLowerCase()});
var nameC=nameB.slice();
nameC.sort();

对于(var i=0;我认为当
names
[“Sheet1”,“我的另一张纸”,“第三张纸”,“另一张纸”,“我的另一张纸?”]
names.sort(函数(a,b){return a.toUpperCase()>b.toUpperCase()?1:-1})
返回
[“另一张纸”,“我的另一张纸”,“我的另一张纸”,“Sheet1”,“第三张纸”]
,而
name.sort(函数(a,b){return a>b?1:-1})
返回
[天哪,另一张,Sheet1,第三张,另一张,我的另一张]
。这个怎么样?顺便问一下,
{
})
?你好!我已经尝试了你正在使用的代码,但是,得到的结果是预期的结果(正确排序-请参阅)。您能在创建
sortednames
变量后立即尝试记录它,看看结果是否符合预期吗?干杯