更新時(shí)間:2023-06-01 來(lái)源:黑馬程序員 瀏覽量:
在JavaScript中,有多種方法可以對(duì)數(shù)組進(jìn)行去重操作。針對(duì)每一種去重的方法,筆者將給出以下具體的代碼演示:
1.使用Set數(shù)據(jù)結(jié)構(gòu):
Set是ES6引入的一種新的數(shù)據(jù)結(jié)構(gòu),它可以存儲(chǔ)唯一的值,因此可以通過(guò)將數(shù)組轉(zhuǎn)換為Set來(lái)實(shí)現(xiàn)去重。
const array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); // [1, 2, 3, 4, 5]
2.使用Array.prototype.filter()方法:
可以使用filter()方法和indexOf()方法結(jié)合,遍歷數(shù)組并只保留第一個(gè)出現(xiàn)的元素。
const array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = array.filter((value, index, self) => { return self.indexOf(value) === index; }); console.log(uniqueArray); // [1, 2, 3, 4, 5]
3.使用Array.prototype.reduce()方法:
可以使用reduce()方法遍歷數(shù)組,并將每個(gè)元素添加到結(jié)果數(shù)組中,但只有在結(jié)果數(shù)組中不存在相同的元素時(shí)才添加。
const array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = array.reduce((acc, value) => { if (!acc.includes(value)) { acc.push(value); } return acc; }, []); console.log(uniqueArray); // [1, 2, 3, 4, 5]
4.使用for循環(huán)和臨時(shí)對(duì)象:
使用for循環(huán)遍歷數(shù)組,將數(shù)組中的元素作為對(duì)象的屬性,只保留第一次出現(xiàn)的元素。
const array = [1, 2, 2, 3, 4, 4, 5]; const uniqueArray = []; const tempObj = {}; for (let i = 0; i < array.length; i++) { if (!tempObj[array[i]]) { tempObj[array[i]] = true; uniqueArray.push(array[i]); } } console.log(uniqueArray); // [1, 2, 3, 4, 5]
以上就是常見(jiàn)的JS去重方法,根據(jù)具體情況選擇適合的方法來(lái)實(shí)現(xiàn)數(shù)組去重。
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開(kāi)發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開(kāi)發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19