如何对数组进行非区分大小写的搜索?

时间:2014-05-29 16:55:25

标签: google-apps-script

我有一个函数,它返回电子表格列中的唯一名称列表。我正在寻找一种方法,我可以使检查不区分大小写,而不强制所有小写。这是我的原始代码:

function testGetUniqueClassNames(){
   var sheet =  getRosterSheet();
   var dataRange = sheet.getDataRange();
   var indices = returnIndices();
   dataRange = dataRange.getValues();
   var classNames = getUniqueClassNames(dataRange, indices.clsNameIndex, indices.crfIdIndex);

   Logger.log(classNames);
}


function getUniqueClassNames(dataRange, clsNameIndex, crfIdIndex) {
  var classNames = [];
  for (var i=2; i<dataRange.length; i++) {
    var thisClassName = dataRange[i][clsNameIndex];
    var thisClassRoot = dataRange[i][crfIdIndex]; 

 if ((classNames.indexOf(thisClassName)==-1)&&(thisClassName!='')&&(thisClassRoot!='')) {
      classNames.push(thisClassName);
    }

  }
  classNames.sort();
  return classNames;

}

1 个答案:

答案 0 :(得分:1)

为了解决这个问题,我创建了第二个小写数组来检查,但在返回时使用了原始数组。

function testGetUniqueClassNames(){
   var sheet =  getRosterSheet();
   var dataRange = sheet.getDataRange();
   var indices = returnIndices();
   dataRange = dataRange.getValues();
   var classNames = getUniqueClassNames(dataRange, indices.clsNameIndex, indices.crfIdIndex);

   Logger.log(classNames);
}


function getUniqueClassNames(dataRange, clsNameIndex, crfIdIndex) {
  var classNames = [];
  var classNamesLC = [];
  for (var i=2; i<dataRange.length; i++) {
    var thisClassName = dataRange[i][clsNameIndex];
    var thisClassNameLC = thisClassName.toLowerCase();
    var thisClassRoot = dataRange[i][crfIdIndex];

 if ((classNamesLC.indexOf(thisClassNameLC)==-1)&&(thisClassName!='')&&(thisClassRoot!='')) {
      classNames.push(thisClassName);
      classNamesLC.push(thisClassNameLC);       
    }  


  }
  classNames.sort();
  return classNames;

}