如何比较App Script中的2个数组

时间:2014-03-05 20:58:15

标签: javascript arrays google-apps-script

我找不到如何在app脚本中比较两个数组,所以这就是我提出的(使用Q& Stackoverflow方法)。

我想要一个显示数组1内容的函数,它与数组2相同,并且与数组2不同。

如果某人有更高效的方式请发帖。

3 个答案:

答案 0 :(得分:1)

// exame functionality with the Comapre script
function exampleCopareArrays(){
  var array1 = [1,2,3,5];
  var array2 = [5,1,4,6];
  var compared = compareArrays(array1,array2);
  var theDiff = compared[0];
  var theSame = compared[1];

}

//  This will compare 2 Arrays
function compareArrays(a1, a2){
  //var a1 = [1,2,3,5];
  //var a2 = [5,1,4,6];

  var a1L = a1.length-1;
  var a2L = a2.length-1;
  var aDiff = [];
  var aSame = [];

  var tf = "FALSE";


    for (var j=0; j <= a1L; ++j) {
      var a1Value = a1[j];
    for (var k=0 ; k <= a2L; k++) {
      var a2Value = a2[k];
      if (a2Value == a1Value ){tf = "TRUE"; k= a2L; }
    } // end for a2L
      if (tf != "TRUE"){ 
        aDiff.push(a1Value);} 
      else { 
        aSame.push(a1Value);}
      tf = "FALSE";
    } // end for a1L

    var theArrays = [];
       theArrays.push(aDiff);
       theArrays.push(aSame);

  //var theArrays = [[aDiff],[aSame]];
  //Logger.log(theArrays);
  return(theArrays); 
} // end compareArrays

答案 1 :(得分:1)

我觉得这更简洁,如果你做了很多记录,那就更快了。如果您不关心通过仅使用那些来保持主阵列而不是将它们复制到相同/差异中,则可以加快速度。 它的工作原理是从差异中删除那些已被发现相同并从中删除的内容并将差异区域添加到差异区域。

//
function exampleCopareArrays(){
  var array1 = [1,2,3,5];
  var array2 = [5,1,4,6];
  var same = array1;
  //Set Same array = to 1 we will be deleting here
  var diff =array2;
  //Set dif array as one we will be adding too.
  var matchfound = false;


  for (var i=0; i < same.length; i++)
  {

    matchfound=false;
    for (var p=0;p < diff.length;p++)
    {

    if (same[i] == diff[p])
    {
      diff.splice(p,1);
      matchfound=true;
      continue;
    }
    }
    if (matchfound==false)
    {
      diff.push(same[i]);
      same.splice(i, 1)
      i=i-1;
    }
  }
  same.sort();
  diff.sort();
  Logger.log(same);
  Logger.log(diff);; 
}

答案 2 :(得分:0)

谢谢Kevrone。我做了一个修改,以便它不合并两个不同的数组,而是只列出相同和不同的数字,现在匹配我的原始脚本。

function compareArrays2(array1, array2){  
  var array1 = [1,3,2,5];
  var array2 = [5,1,4,6];
  var same = array1;
  //Set Same array = to 1 we will be deleting here
  var diff =array2;
  //Set dif array as one we will be adding too.
  var matchfound = false;

  for (var i=0; i < same.length; i++)
  {

    matchfound=false;
    for (var p=0;p < diff.length;p++)
    {

    if (same[i] == diff[p])
    {
      diff.splice(p,1);
      matchfound=true;
      continue;
    }
    }
    if (matchfound==false)
    {
     // diff.push(same[i]);   //Put this back in if you want to merge the numbers that are different.
      same.splice(i, 1)
      i=i-1;
    }
  }
  same.sort();
  diff.sort();
 // Logger.log(same);
 // Logger.log(diff);

    var theArrays = [];
        theArrays.push(diff);
        theArrays.push(same);

 //var = theArrays[] = [[aDiff],[aSame]];
  Logger.log(theArrays);
  return(theArrays); 

} // end compareArrays