问题:
比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
代码实现:
function diff(arr1, arr2) {
var newArr = [];
var arr3=arr1.concat(arr2);//将arr1和arr2合并为arr3
function isContain(value){
//找出arr3中不存在于arr1和arr2中的元素
return arr1.indexOf(value)==-1||arr2.indexOf(value)==-1;
}
newArr = arr3.filter(isContain);
return newArr;
}
实现思路:
首先将两个数组合arr1和arr2合并得到新的数组arr3。如果元素在arr3中存在,但是不在arr1或arr2中出现,那么这个元素就是两个数组中不同的元素。最后使用filter()方法将这些不同的元素保存在newArr中。
ps:
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
filter()方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。