码迷,mamicode.com
首页 > 编程语言 > 详细

FreeCodeCamp之筛选出两个数组不同部分

时间:2017-09-30 10:14:34      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:amp   filter   去重   row   cal   测试的   let   筛选   ras   

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

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;

}

 

 

 

 

 

 

 

 

FreeCodeCamp之筛选出两个数组不同部分

标签:amp   filter   去重   row   cal   测试的   let   筛选   ras   

原文地址:http://www.cnblogs.com/skyyo/p/7613546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!