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

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;

}

 

 

 

 

 

 

 

 

posted on 2017-09-30 07:55  多学点才踏实  阅读(270)  评论(0编辑  收藏  举报