方法一、 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...