數(shù)組去重
在處理數(shù)據(jù)的時候,常常需要對數(shù)組進(jìn)行去重操作摩窃。這里記下最常用的三種方法集币。
1. ES6中新增的Set()
構(gòu)造函數(shù)和...
展開語法
Set
是JavaScript標(biāo)準(zhǔn)內(nèi)置對象晴竞,它是ES6(ES2015)里新增的對象亲族。這個對象允許呢存儲任何類型的唯一值,無論是原始值或者是對象引用拂蝎。我們可以利用它這個特性穴墅,用構(gòu)造函數(shù)Set()
來對數(shù)組進(jìn)行去重操作。
const arr = ['A', 'B', 'C', 'A', 'B'];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr);
輸出:
['A','B','C']
2. 使用數(shù)組的indexOf()和filter()方法
indexOf()
方法會返回數(shù)組中可以找到一個給定元素的第一個索引温自,如果沒有玄货,則返回-1。
對于數(shù)組中有重復(fù)元素的情況悼泌,可以結(jié)合這一特性松捉,通過filter來遍歷數(shù)組,根據(jù)以下代碼來過濾掉重復(fù)元素馆里。
const arr = ['A', 'B', 'C', 'A', 'B'];
const uniqueArr = arr.filter((item, index) => index === arr.indexOf(item));
console.log(uniqueArr);
輸出:
['A','B','C']
indexOf()方法在這里是為filter()方法提供判斷條件隘世。同理,我們也可以用其他的方式來進(jìn)行判斷也拜。
3. 使用數(shù)組的forEach()和includes()方法
這個方法是先初始化一個空數(shù)組以舒,用forEach()遍歷原數(shù)組趾痘,然后將字段一個一個push進(jìn)去慢哈。
const arr = ['A', 'B', 'C', 'A', 'B'];
arr.forEach(i => {
if (!uniqueArr.includes(i)) { uniqueArr.push(i) }
});
console.log(uniqueArr);
輸出:
['A','B','C']
這里用includes()
來判斷uniqueArr
里是否已經(jīng)有這個字段,你也可以用indexOf()
或者其他方式來判斷永票。