比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
这是一些对你有帮助的资源:
这些资源又被我浪费掉了大部分。。不过好歹算是写出来了
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; })); //第二个数组在第一个数组中不同的项
}