陣列去重方法歸納

2021-09-29 19:22:30 字數 1670 閱讀 4870

let arr = [1,2,3,2,3,4,{},{}];

const result = ;

set 去重

set 方法對陣列進行去重是es6中最常用的方法,**比較簡潔

array.from(new set(arr))

[...new set(arr)]

兩種寫法均可對陣列進行去重,至於array.from是把類陣列轉化為陣列, … 擴充套件符則是將set後的值轉為字串,所以在其外部加上乙個 ,將其變成陣列

includes 去重

includes用於判斷該陣列中是否包含某個值

思路: 建立乙個新陣列,迴圈原陣列,依次判斷新陣列中是否含有原陣列中的值,若存在,則不新增,不存在,則將原陣列遍歷的值新增進新陣列

for(let v of arr)

}

indexof去重

indexof 方法判斷某個值在陣列中是否存在,若不存在,則返回 -1;若存在,則返回該元素在陣列中對應的索引值;

思路:與includes相同

for(let v of arr)

}

雙重for迴圈去重

思路: 利用雙重for迴圈,內層迴圈初始值為外層迴圈元素後的乙個元素,並依次往後查詢,判斷兩個元素是否相同,若相同,則刪除後乙個,同時陣列元素減少乙個,故內層迴圈的索引值需要減 1

for(var i=0;isort去重

思路: 利用sort將陣列進行排序,排序後對陣列進行遍歷,將當前索引值對應的元素與其後乙個元素進行比較,判斷兩者是否相等

arr = arr.sort();

for(let i=0;i注意:這裡需要注意呼叫陣列sort方法時,根據陣列的情況去判斷排序是否需要自己編寫函式邏輯。例如,上面的方法適用於該陣列中的元素是同一型別,假如上述陣列換成arr = [1,2,『3』,3,2,『3』,3,4,{},{}]; 則去重不完整;

hasownproperty去重

思路:利用物件屬性唯一原理

let obj={};

const newarray = arr.filter(item=>)

filter去重

思路: filter建立乙個新陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素

const newarray=arr.filter((item,index,arr)=>)
reduce去重

思路: 該方法去重的思路與sort()類似,只是不再使用for迴圈,而是reduce

arr.sort().reduce((prev,curv)=>

return curv;

});result.push(arr[arr.length -1])

map物件去重

思路: 利用map中的has()方法判斷是否存在某個鍵,如果存在,則不新增至新陣列中,反之則新增

let map = new map();

for(let i=0;i總結: 總體來說出去es6中set方法外,無外乎就是兩種大致思路,一是遍歷陣列中的元素,判斷其是否重複出現;二是利用物件中鍵的唯一性原則;

以上純屬個人看法,若什麼地方說得不對或不全的,還請各位大神指教,在下不勝感激。

陣列去重方法

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