FreeCodeCamp之筛选出两个数组不同部分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FreeCodeCamp之筛选出两个数组不同部分相关的知识,希望对你有一定的参考价值。
比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
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之筛选出两个数组不同部分的主要内容,如果未能解决你的问题,请参考以下文章
Diff Two Arrays-freecodecamp算法题目
No repeats please(freecodecamp高级算法6)
Smallest Common Multiple FreeCodeCamp