数组去重装X法

不少公司招聘web前端时,免不了需要让面试者做题。本片主要讲一下当遇到数组去重的问题时,怎样让考官一瞬间懵逼。

一、for循环依次进行筛选

这个网上太多了,随便搜搜就找到一大堆。

二、用filter特性

1
2
3
4
5
6
7
8
9
function removeRepeat(arr){
return arr.filter(function(elem, pos) {
return arr.indexOf(elem) == pos;
});
}
var arr = new Array("1","2","3","4","4","4","4","5");
var newArr = removeRepeat(arr);
console.log(newArr);

利用filter特性达到数组去重。

三、装X让面试官暂时懵逼的方法

1
2
3
4
var arr = [1,2,2,3,4,1,4,2],str = '';
var result = (function unique(num, arr, str) {
return arr.length > 0 ? unique(arr.shift(), arr, str.indexOf(num) == -1 ? str += num : str) : str.split('');
})(arr.shift(), arr, str);

简单介绍一下思路,该方法是用回调和Array.shift()代替for循环,用三目代替if,增加严谨的逻辑,让人一时琢磨不透。总体思路每次获得数组的第一位元素,判断str内是否存在,如果存在继续回调,如果不存在插入,直到数组没有元素。
面试官很大可能会让你讲解这段代码,你的装X时间开始了….

如果同学们有更好的方法 可以发送邮件到 fighterdiwen@163.com 咱们一起进行交流。