0

我有一个 google 电子表格,其中包含分布在各个列中的多个数据(例如 6 列 - 电话号码、IMEI、URL、ID、Reg No 和时间),并且我有 15K 行数据。

我必须在新工作表中查找/显示所有重复的电话号码(第 0 列)和与它们相关的数据。

但是,当我尝试对数据进行排序时,它会抛出类似的错误

“比较方法违反了它的一般合同。(第 6 行,文件“代码”)”

代码如下所示,供您参考:

function myFunction() {

  var values  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DUP').getDataRange().getValues()

  var dupData = new Array();

  values.sort(function sortFunction(a, b) {
    if (a[0] === b[0]) {
        return 0;
    }
    else {
        return (a[0] < b[0]) ? -1 : 1;
    }
});

  for(i=1;i<values.length;i++)
  {
    if (values[i][0] == values[i+1][0]) {
        dup.push(values[i]);
    }
  }

   var new1 = dpnum.getSheetByName('Test123');
  new1.getRange(1,1,dup.length,dup[0].length).setValues(dup);

}
4

1 回答 1

0

您的代码可以像这样简化(代码中的注释):

function myFunction() {
  var values  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DUP').getDataRange().getValues()  
  var dupData = new Array();  
  values.sort(function(x,y){  // sort on first column
    var xp = x[0];
    var yp = y[0];
    return xp < yp ? -1 : xp > yp ? 1 : 0;// return 0 if equal, 1 if > and -1 if <
  });  
  for(var i=1 ; i<values.length ; i++){
    if (values[i-1][0] == values[i][0]) { // I changed the index as well to keep only valid data
      dup.push(values[i]);
    }
  } 
  var new1 = dpnum.getSheetByName('Test123');
  new1.getRange(1,1,dup.length,dup[0].length).setValues(dup);  
}
于 2016-07-20T19:43:05.073 回答