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