常用的陣列去重方法

2021-10-06 07:44:09 字數 1921 閱讀 9113

陣列的去重

一. 普通雙迴圈去重

// 操作原陣列

let array =[3

,1,1

,1,'1',7

,1,3

,2,5

,4,3

,2,5

,7,8

,9,8

];for(

let i =

0, len = array.length; i}console.

log(array)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

// 定義乙個新的陣列,來接收去重後的陣列

let newarr =

;for

(let i =

0, len = array.length; iconsole.

log(newarr)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

二.利用foreachmap,reduce去重

// foreach返回值是undefined

let newarr =

;array.

foreach

(each =>})

;console.

log(newarr)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

// map有返回值

let newarr =

;array.

foreach

(each =>})

;console.

log(newarr)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

// reduce,第二個引數是pre的初始值

array.

reduce

((pre,cur)

=>

// 可以自己列印看一哈pre的cur是啥子

console.

log(pre,cur)

return pre},

);console.

log(pre)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

三.利用setaarry.from/…擴充套件運算子去重(一句話)

// set和map類似,都是一組key的集合,但是set不儲存value。由於key不能重複,所以,可用於去重

let newarr = array.

from

(new

set(array)

)let newarr =

[...

newset

(array)];

console.

log(newarr)

// [3, 1, "1", 7, 2, 5, 4, 8, 9]

四.自己封裝去重方法

/**

* @param

* arr 要去重的陣列

* option 如果是物件型別的陣列,那麼option就是你指定的去重的關鍵字

* @return

* newarr,去重後的陣列

*/// es6函式入參可傳入預設值,不傳值則直接取用預設值

function

removeduplicate

(arr =

,option)

else})

;}else newarr = array.

from

(new

set(arr))}

return newarr

}

陣列去重方法

1 es6提供了新的資料結構set,它類似於陣列,但是成員的值是唯一的,沒有重複的值。let arr 1,2,5,2,3,4,1,2,3,5,4,1,2,3,2,1,1,1,asd 123 123 123 asd 1,true,true,false console.log new set arr 或...

陣列去重方法

雙迴圈去重 雙重 for 或 while 迴圈是比較笨拙的方法,它的實現原理很簡單 先定義乙個包含原始陣列第乙個元素的陣列,然後遍歷原始陣列,將原始陣列中的每個元素與新陣列的每個元素進行比較,如果不重複則新增到新的陣列中,最後返回新的陣列,其缺點是如果陣列長度很長,那麼將會非常消耗記憶體 funct...

陣列去重方法

1.使用原生的filter和indexof來進行過濾和篩選。var filtered data.filter function item,index 複製 使用filter的第三個引數繫結this的值 var filtered2 data.filter function item,index,sel...