Diff Two Arrays
比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。言之,返回两个数组的差异。
思路:
先找出arr1中与arr2不同的部分组成新数组1,再找出arr2中与arr1不同的部分组成新数组2,在将这两个数组合并,得出两个数组不同的部分。
知识点:
(1)var newArr=arr.filter(func);
filter函数可以筛选出可以使func函数返回true的元素并组成一个新的数组,func函数默认value值为数组中的单个元素;
1 var newArr1 = arr1.filter(comp1); 2 var newArr2 = arr2.filter(comp2);
(2)arr.indexOf(value)===-1;
indexOF函数可以对数组进行查找,如果能在数组arr中找到value,则后面返回的数字是value值在arr中的索引;
1 function comp1(value) { 2 if (arr2.indexOf(value) === -1) { 3 return true; 4 } 5 }
(3)newArr = newArr1.concat(newArr2);
concat函数可以实现两个数组的组合,newArr1和newArr2的首尾相接形成新的数组。
1 newArr = newArr1.concat(newArr2);
代码:
1 function diff(arr1, arr2) { 2 var newArr = []; 3 4 function comp1(value) { 5 if (arr2.indexOf(value) === -1) { 6 return true; 7 } 8 } 9 10 function comp2(value) { 11 if (arr1.indexOf(value) === -1) { 12 return true; 13 } 14 } 15 var newArr1 = arr1.filter(comp1); 16 var newArr2 = arr2.filter(comp2); 17 newArr = newArr1.concat(newArr2); 18 return newArr; 19 } 20 diff( 21 ["andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]);