数组查找去重
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值
destroyer([1, 2, 3, 1, 2, 3], 2, 3)
应该返回
[1, 1]
.
destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3)
应该返回
[1, 5, 1]
.
destroyer([3, 5, 1, 2, 2], 2, 3, 5)
应该返回
[1]
.
destroyer([2, 3, 2, 3], 2, 3)
应该返回
[]
.
destroyer(["tree", "hamburger", 53], "tree", 53)
应该返回
["hamburger"]
.
开始时不熟悉,把
([2, 3, 2, 3], 2, 3)
直接当成了数组,导致结果完全没有,实验了两次才发现arr[1]返回的是前面数组的第二个元素3,查找了才发现要用arguments来传入参数,只能考虑将要检验的数push进一个新的数组方便使用,然后用去重。indexOf查找不到返回-1,查到返回第一个所在位置对应值,filter返回一个新数组,包含arr中通过测试的值。
function destroyer(arr) {
var newArr=[];
for(i=1;i<arguments.length;i++){
newArr.push(arguments[i]);
}
var temp = arr.filter(function(item,index,array){
return newArr.indexOf(item) < 0;
});
return temp;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3,1);