一、前言:
我們在實際工作中,或者在面試找工作時,都會用到或者被問到一個問題,那就是“數組如何去重”。是的,這個問題有很多種解決方案,看看下面的十種方式吧!
二、數組去重方式大匯總:
Methods 1: 思路:定義一個新數組,并存放原數組的第一個元素,然后將元素組一一和新數組的元素對比,若不同則存放在新數組中。
function unique(arr){ var res = [arr[0]]; for(var i=1; i<arr.length; i++){ var repeat = false; for(var j=0; j<res.length; j++){ if(arr[i] === res[j]){ repeat = true; break; } } if(!repeat){ res.push(arr[i]); } } return res;}console.log('------------方法一---------------');console.log(unique([1,1,2,3,5,3,1,5,6,7,4]));Methods 2: 思路:先將原數組排序,在與相鄰的進行比較,如果不同則存入新數組。
function unique2(arr){ var arr2 = arr.sort(); var res = [arr2[0]]; for(var i=1; i<arr2.length; i++){ if(arr2[i] !== res[res.length-1]){ res.push(arr2[i]); } } return res;}console.log('------------方法二---------------');console.log(unique2([1,1,2,3,5,3,1,5,6,7,4]));Methods 3: 利用對象屬性存在的特性,如果沒有該屬性則存入新數組。
function unique3(arr){ var res = []; var obj = {}; for(var i=0; i<arr.length; i++){ if( !obj[arr[i]] ){ obj[arr[i]] = 1; res.push(arr[i]); } } return res;}console.log('------------方法三---------------');console.log(unique3([1,1,2,3,5,3,1,5,6,7,4]));Methods 4: 利用數組的indexOf下標屬性來查詢。
function unique4(arr){ var res = []; for(var i=0; i<arr.length; i++){ if(res.indexOf(arr[i]) == -1){ res.push(arr[i]); } } return res;}console.log('------------方法四---------------');console.log(unique4([1,1,2,3,5,3,1,5,6,7,4]));Methods 5: 利用數組原型對象上的includes方法。
function unique5(arr){ var res = []; for(var i=0; i<arr.length; i++){ if( !res.includes(arr[i]) ){ // 如果res新數組包含當前循環item res.push(arr[i]); } } return res;}console.log('------------方法五---------------');console.log(unique5([1,1,2,3,5,3,1,5,6,7,4]));Methods 6: 利用數組原型對象上的 filter 和 includes方法。
function unique6(arr){ var res = []; res = arr.filter(function(item){ return res.includes(item) ? '' : res.push(item); }); return res;}console.log('------------方法六---------------');console.log(unique6([1,1,2,3,5,3,1,5,6,7,4]));Methods 7: 利用數組原型對象上的 forEach 和 includes方法。
function unique7(arr){ var res = []; arr.forEach(function(item){ res.includes(item) ? '' : res.push(item); }); return res;}console.log('------------方法七---------------');console.log(unique7([1,1,2,3,5,3,1,5,6,7,4]));
新聞熱點
疑難解答
圖片精選