比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
diff([1, 2, 3, 5], [1, 2, 3, 4, 5])
应该返回一个数组。
["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
应该返回 ["pink wool"]
。
["andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"]
应该返回 ["diorite", "pink wool"]
。
["andesite", "grass", "dirt", "dead shrub"], ["andesite", "grass", "dirt", "dead shrub"]
应该返回 []
。
[1, 2, 3, 5], [1, 2, 3, 4, 5]
应该返回 [4]
。
[1, "calf", 3, "piglet"], [1, "calf", 3, 4]
应该返回["piglet", 4]
。
[], ["snuffleupagus", "cookie monster", "elmo"]
应该返回 ["snuffleupagus", "cookie monster", "elmo"]
。
[1, "calf", 3, "piglet"], [7, "filly"]
应该返回 [1, "calf", 3, "piglet", 7, "filly"]
。
给出的提示为arr.slice(number1,number2)提取arr中number1到number2之间的数形成新数组并返回,不改变原来的数组;
arr. filter(callbackfunction(){}) 返回数组arr中通过callbackfunction测试的值,以数组的形式返回;
arr.indexOf(item) 在arr中查找item,查到了返回item对应的索引值,查不到返回-1;
arr. concat(arr2 or numbers) 将arr2或者numbers与原数组arr合并返回新的数组。
前面做过查询去重,因此这里考虑运用之前的函数。
function differ(arr1,arr2){
var newArr=arr1.concat(arr2); //将arr1和arr2合成一个新的数组来使用,分边用arr1和arr2在newArr中查询;
var temp=newArr.filter(function(item,index,array){
return arr1.indexOf(item)==-1 ||arr2.indexOf(item)==-1; //newArr在arr1或arr2中找不到的元素就是需要的。
});
return temp;
}