最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to compare 2 arrays in App Script - Stack Overflow

programmeradmin2浏览0评论

I could not find how to pare two arrays in app script so here is what I came up with (Using the Q&A method of stackoverflow).

I wanted a function that would display the contents of Array 1 that are the same as Array 2 and that are different than Array 2.

If someone has a more efficient way please post.

I could not find how to pare two arrays in app script so here is what I came up with (Using the Q&A method of stackoverflow).

I wanted a function that would display the contents of Array 1 that are the same as Array 2 and that are different than Array 2.

If someone has a more efficient way please post.

Share Improve this question edited Jan 2, 2018 at 1:17 Wicket 38.8k9 gold badges80 silver badges195 bronze badges asked Mar 5, 2014 at 20:58 Bjorn BehrendtBjorn Behrendt 1,27418 silver badges35 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

I find this to be more concise and, if you are doing lots of records, faster. You could speed it up faster if you don't care about keeping your main arrays by just using those instead of duplicating them into same/diff. It works by deleting from the diff those that have been found as the same and deleting from the same and adding to the diff area those that are different.

//
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);; 
}
// exame functionality with the Comapre script
function exampleCopareArrays(){
  var array1 = [1,2,3,5];
  var array2 = [5,1,4,6];
  var pared = pareArrays(array1,array2);
  var theDiff = pared[0];
  var theSame = pared[1];

}

//  This will pare 2 Arrays
function pareArrays(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 pareArrays

Thanks Kevrone. I made one modification so that it didn't merge the two different arrays, but rather just listed the same and different numbers, which now matches my original script.

function pareArrays2(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 pareArrays
发布评论

评论列表(0)

  1. 暂无评论