面試題 4種陣列去重的方法

2022-08-28 17:27:11 字數 1645 閱讀 6113

陣列去重或者其衍生作為筆試題或者機試題出現的機率也是很大的,寫出的方法越多,則讓面試官覺得你思維越開闊,那麼成功的機率當然就大了。

廢話不多說,下面來說說下面我整理的4中陣列去重的方法

方法一: findinarr方法+select方法組合

findinarr : 查詢乙個數在當前陣列中是否存在,存在返回true,找完所有沒有找到,返回false,這個數就是我們要操作的那個陣列

select      :迴圈陣列,並呼叫findinarr方法 查詢當前arr[i]在arr2中是否存在,如果返回false 那麼就把當前這個數 arr[i] ,push到新的陣列 arr2中,最後return arr2

1

function

findinarr(n ,arr)6}

7return

false;8

}9function

select (arr)15}

16return

arr2;

17 }

view code

方法二 :利用json特性

建立乙個空的json,通過對key的檢索,---> !json[arr[i]],取反說明不存在

這樣我們可以對其進行賦值,json[arr[i]] = true;  對於 賦什麼值,隨意,保證它的鍵值對就行

並且把當前這個數push 或者其他方式都行 ,總是新增到新陣列 arr2中,最後return arr2

1

function

select (arr);

3var arr2 =;

4for (var i = 0; i < arr.length; i++) 9}

10return

arr2;

11 }

view code

方法三: 相鄰數比較法,這個方法前提是先用sort 進行簡單排序,不需要改進版的

經過sort排序之後,我們不論它排序是否正確,但是有一點我們能確定,那就是相同的一定被排到了一起

那麼我們對排序之後的陣列遍歷,並且讓當前的數和下乙個數進行比較,如果相等那麼用splice(i,1) 方法對其進行刪除,這時候i的值需要 i--,避免它少比一次,最後return arr;

1

function

select(arr)8}

9return

arr;

10 }

view code

方法四:使用陣列的indexof方法 (ie8--不相容)

通過判斷arr2.indexof(arr[i]) == -1 ,來確定新陣列arr2中沒有arr[i],並將其新增到陣列arr2中,最終返回 arr2

1

function

select (arr)7}

8return

arr2;

9 }

view code

上述四中方法肯定存在的效能的差異,可以從速度上,所佔記憶體等進行比較,我沒有測過所以就不妄加定論。希望測過的朋友,能告知 。謝謝

TODO 1 6種陣列去重方法 面試題

前兩天看到有乙個人在總結面試的時候寫到問到了陣列去重,說是方法很多。一時手癢把我能想到的都寫出來了。1 最傳統的方法,鏈式 檢索,這個方法雖說是雙層for迴圈巢狀,但是能夠保留陣列原有的順序,對於有順序要求的可以用這個,而且可以相容低版本瀏覽器。let ary 2,324,35,2,36,1,2,5...

js陣列去重 面試題

首先再講陣列去重之前,先引進乙個小的知識點indexof indexof 方法可返回某個指定的字串值在字串中首次出現的位置,eg如下 var arr 1 2,3 4,5 var index arr.indexof 1 1,3,5 console.log index index 輸出的是0 2 4 v...

幾種陣列去重方法

使用es6中的set是最簡單的去重方法。var arr 1 1,true true true true,15 15,false false undefined,undefined,null null nan nan nan 0 0,a a function arr unique1 arr arr u...