Javascript algorithm to find elements in array that are not in another array

前端 未结 8 1096
情歌与酒
情歌与酒 2020-11-27 06:19

I\'m looking for a good algorithm to get all the elements in one array that are not elements in another array. So given these arrays:

var x = [\"a\",\"b\",\         


        
8条回答
  •  孤独总比滥情好
    2020-11-27 06:58

    Make sorted copies of the arrays first. If the top elements are equal, remove them both. Otherwise remove the element that is less and add it to your result array. If one array is empty, then add the rest of the other array to the result and finish. You can iterate through the sorted arrays instead of removing elements.

    // assume x and y are sorted
    xi = 0; yi = 0; xc = x.length; yc = y.length;
    while ( xi < xc && yi < yc ) {
      if ( x[xi] == y[yi] ) {
        xi += 1;
        yi += 1;
      } else if ( x[xi] < y[yi] ) {
        z.push( x[xi] );
        xi += 1;
      } else {
        z.push( y[yi] );
        yi += 1;
      }
    }
    // add remainder of x and y to z.  one or both will be empty.
    

提交回复
热议问题