数组去重
数组去重的方法是面试中的常见问题,下面总结了一些自己用过的以及其他前辈分享的去重方法,如有侵扰烦请联系删除。
ES6提供的set方法
1 2 3 4 5 6 7
| function unique(arr){ return Array.from(new Set(arr)) } let arr = [1,2,2,3,4,5,5] console.log(unique(arr))
|
indexOf去重
1 2 3 4 5 6 7 8 9 10
| function unique(arr){ let newArr = []; for(let i=0,len=arr.length;i<len;i++){ if(newArr.indexOf(arr[i]) === -1){ newArr.push(arr[i]) } } return newArr }
|
双重for循环去重
1 2 3 4 5 6 7 8 9 10 11 12
| function unique(arr){ for (let i=0,len=arr.length;i<len;i++){ for (let j=i+1,len=arr.length;j<len;j++){ if (arr[i] == arr[j]){ arr.splice(j,1) j--; len--; } } } return arr; }
|
利用sort排序对相邻元素去重
1 2 3 4 5 6 7 8 9
| function unique(arr){ arr = arr.sort(); let arr1 = [arr[0]] for (let i=1,len=arr.length;i<len;i++){ if(arr[i] != arr[i-1]){ arr1.push(arr[i]) } } }
|
利用filter方法去重
1 2 3 4 5 6 7
| function unique(arr){ let newArr = arr.filter(function(item,index){ return arr.indexOf(item,0) === index }) }
|