首页 > 代码库 > Diff Two Arrays

Diff Two Arrays

比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。

这是一些对你有帮助的资源:

  • Comparison Operators
  • Array.slice()
  • Array.filter()
  • Array.indexOf()
  • Array.concat()

这些资源又被我浪费掉了大部分。。不过好歹算是写出来了

function diff(arr1, arr2) {
  var newArr = [];         
  var same=[];
  for(var i=0;i<arr1.length;i++){
    if(arr2.indexOf(arr1[i])!==-1){
      same.push(arr1[i]);                //找出相同的项放在一个数组中
    }
  }
  newArr=arr1.filter(function(v){
   return same.indexOf(v)==-1;           //找出第一个数组中不同的项
  }).concat(arr2.filter(function(v){
   return same.indexOf(v)==-1;           //找出第二个数组中不同的项
  }));
  return newArr;                         //返回
}

后来想想,其实不用找相同的项,直接找不同的项就好了,瞬间把上面的代码砍掉一大半,好厉害的感觉有木有

function diff(arr1, arr2) { 
  return arr1.filter(function(v){
   return arr2.indexOf(v)==-1;        //第一个数组在第二个数组中不同的项
  }).concat(arr2.filter(function(v){
   return arr1.indexOf(v)==-1;
  }));                                //第二个数组在第一个数组中不同的项
}

 

Diff Two Arrays