陣列去重的幾種方法 基礎篇

2021-08-01 02:07:00 字數 1482 閱讀 1882

不知怎麼就想到這裡了,動手總結算,算是給自己看的吧。

盡量做到簡單易懂。注釋清楚。包括些許基礎的知識點。(就是文字表達不行,懶得想,直接注釋了。)

直接進入主題。沒有demo,基本控制台都可以測試。

!!!基礎篇。 建立在array的值都是基本型別的情況。todo

第一種: 基本可以擯棄。當時還不知道陣列的一些方法,就純用for去實現的。(按照思路寫的,又稍許更改)

function

unique1

(arr)

var result = ;

result.push(arr.shift(1)) //直接把arr第乙個值push到result裡。array.prototype.shift/push 都會更改使用此方法的陣列

var len = arr.length;

//原陣列作為外層迴圈遍歷,內層迴圈reuslt因為值會改變,就不提取len出來。

for (var i = 0; i < len; i++)

if (j === result.length - 1) }}

return result;}

第二種: 利用array.prototype.indexof() 來處理。(事實上,自己在用第一種方法解決問題後,沒過幾天就看到了這個inexof。覺得自己當時真實蠢到爆。)

indexof()方法返回在陣列中可以找到給定元素的第乙個索引,如果不存在,則返回-1。

function

unique2

(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c'])

}return result;

}

**很簡單,也不細說了。

這裡相對第一種,**量減少很多。(第一種其實就是這種思路沒有內建方法的實現)。

第三種: 邏輯—先把arr排序。然後遍歷arr每個值,判斷其和result最後1個值是否相等,來決定是否將此值推入陣列。

function unique3(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c']) 

}return result;

}

第四種:利用es6的set(set有點類似陣列,但是它本身是不能重複的。!。本身就幫我們去重了)。然後我們將其轉為陣列就好了。

集合(set)物件允許你儲存任意型別的唯一值(不能重複),無論它是原始值或者是物件引用。

function

unique4

(arr = [1, 2, 1, 2, 3, 'a', 'b', 'a', 'c'])

return

}

todo 第四種。嗯,自己也僅處於會「用」的階段而已。代完善。

(2017/5/14 1:40。寫到這裡回頭看,發現挖坑好多。爭取早日填坑。)

陣列去重的幾種方法

實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 最簡單陣列去重法 function unique1 array return n 實現思路 新建一js物件...

陣列去重的幾種方法

記錄一些陣列去重的方法,如果有錯誤的地方,還望指正 1.利用es6中的set 去重特性 const arr 1,2,3,6,8,2,9,5,6,4,9 function uniq arr const resultarr1 uniq arr console.log resultarr1 2.利用inc...

陣列去重的幾種方法

function unique arr let arr 1,2,3,1,2,2,a b c c a 4 4,false,false,undefined,undefined,null,null nan,nan,console.log unique arr 1,2,3,a b c 4,false,und...