陣列實現去重的方法

2021-10-09 03:22:23 字數 3012 閱讀 9636

方法一、 filter()和indexof()實現去重

let orarray =[1

,2,3

,4,1

,2,3

,4]let unarray = orarray.

filter

((item,index,array)

=>

)console.

log(unarray)

//結果:[1,2,3,4]

因為indexof返回它為給定值找到的第乙個索引,如果它不是重複值,那麼該項的索引必須相同!

方法二、 2、reduce()和includes()實現去重

includes返回乙個布林值——如果在陣列中找到該值,則返回true;否則返回false

function

unique

(arry)

let arr =[1

,2,3

,4,5

,5,6

,null

,null

,undefined]

; console.

log(

unique

(arr));

//結果:[1,2,3,4,5,6,null,undefined]

es6中新增了set資料結構,類似於陣列,但是 它的成員都是唯一的 ,其建構函式可以接受乙個陣列作為引數

var fruits=

['蘋果'

,'香蕉'

,'葡萄'

,'火龍果'

,'蘋果'

,'葡萄'

,'火龍果'

]function

distinct

(array)

console.

log(

distinct

(fruits));

//結果: ["蘋果", "香蕉", "葡萄", "火龍果"]

可簡寫成

function

distinct

(array)

甚至

let distinct = (a) => [...new set(a)]
方法

四、雙重for迴圈

雙重for迴圈 如果陣列長度很大,效率會很低,另外如果陣列中有nan的話也是無法去重的。(nan==nan為false)

var arr =

['h'

,'e'

,'l'

,'l'

,'l'

,'o'

,'2',1

,2,1

,1,3

,2];

function

norepeat4

(arr)}}

return arr;

}var result4 =

norepeat4

(arr)

; console.

log(result4)

;//結果:[ "h", "e", "l", "o", "2", 1, 2, 3 ]

方法

五、利用sort方法去除相鄰重複元素 但是會改變原陣列的排序

var fruits=

['蘋果'

,'香蕉'

,'葡萄'

,'火龍果'

,'蘋果'

,'葡萄'

,'火龍果'

]function

distinct

(array)

seen = sortedarray[i];}

return res;

}console.

log(

distinct

(fruits));

//結果: ["火龍果", "蘋果", "葡萄", "香蕉"]

以上都是陣列去重常用方法

方法

六、利用object 鍵值對

var arr =[1

,2,3

,2,3

,4,5

,6,7

,8,9

,8,5

];//將陣列轉換成物件

//利用物件的key值不能重複這一特性

vartoobject

=function

(array)

;for

(var i=

0,j=array.length;i)return obj;

}//再將物件轉換成陣列

vartoarray

=function

(obj)

return arr;

}//綜合前兩者,完成去陣列重複項方法

varuiq

=function

(arr)

var arr1 =

uiq(arr)

; console.

log(arr1)

;//結果:[1,2,3,4,5,6,7,8,9]

方法七、 利用map物件

function

uique

(arr)

let arr =[1

,2,3

,4,5

,5,6

,null

,null

,undefined]

; console.

log(

uique

(arr));

//結果:[1,2,3,4,5,6,null,undefined]

陣列去重方法

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...