var a = [1,3,5,6];
var b = [5,2,3,4];
2个数组,我想找出a中有,而b没有的,b有而a没有的,怎样才能达到最高效率?

解决方案 »

  1.   

    两个数组相加   取出只出现一次的数  就是a中有,而b没有的或b有而a没有的  然后判断取出的数是属于a  还是属于b
      

  2.   

    两个数组相加 取出只出现一次的数,这样只是取出了不重复的数吧,不能取出a中有而b没有的,和b有而a没有的
      

  3.   

    我现在的做法是:
    var a = [1,3,5,6];
    var b = [5,2,3,4];
    for(var i=0;i<a.length;i++) {
      for(var j=0;j<b.length;j++) {
    if (a[i] == b[j]) {
    a.splice(i,1);
    b.splice(j,1);
    i--;
    break;
    }
      }
    }
      

  4.   

    另一种实现<script type="text/javascript">
    var a = [1,3,5,3,6,'A','C','D'];
    var b = [5,2,3,4,7,'B','C'];
    var len = Math.max(a.length, b.length);
    var onlyA = {}, onlyB = {}, arrA = [], arrB = [];
    for(var i = 0; i < len; i++){
    a[i] && (onlyA[a[i]] = a[i]);
       b[i] && (onlyB[b[i]] = b[i]);
    }
    for(var i = 0; i < len; i++){
    b[i] && (delete onlyA[b[i]]);
       a[i] && (delete onlyB[a[i]]);
    }
    for(var p in onlyA){
    arrA.push(onlyA[p]);
    }
    for(var p in onlyB){
    arrB.push(onlyB[p]);
    }
    alert(arrA + "\n" + arrB);
    </script>