js數(shù)組中去除重復(fù)值的幾種方法
在日常開發(fā)中,我們可能會(huì)遇到將一個(gè)數(shù)組中里面的重復(fù)值去除,那么,我就將我自己所學(xué)習(xí)到的幾種方法分享出來
去除數(shù)組重復(fù)值方法:
1,利用indexOf()方法去除
思路:創(chuàng)建一個(gè)新數(shù)組,然后循環(huán)要去重的數(shù)組,然后用新數(shù)組去找要去重?cái)?shù)組的值,如果找不到則使用.push添加到新數(shù)組,最后把新數(shù)組返回回去就行了
看不懂沒關(guān)系,上代碼就比較容易懂了
function fun(arr){ let newsArr = []; for (let i = 0; i < arr.length; i++) { if(newsArr.indexOf(arr[i]) === -1){ newsArr.push(arr[i]); } } return newsArr; }
2,利用splice方法去除
思路:這個(gè)方法有點(diǎn)模仿冒泡 倆層循環(huán),外層循環(huán)遍歷數(shù)組,內(nèi)層循環(huán)比較值,如果有相同, 則使用splice去除 然后返回處理完的數(shù)組即可
看不懂沒關(guān)系,上代碼就比較容易懂了
function fun(arr){ for (let i = 0; i < arr.length; i++) { for(let j = i+1; j < arr.length; j++){ if(arr[i]==arr[j]){ arr.splice(j,1); j--; } } } return arr; }
3,利用es6新增的集合Set去除
這里簡(jiǎn)單介紹一下Set 集合,他跟數(shù)組很相識(shí),但不是數(shù)組,是集合。他里面也有跟多方法,如增(add),刪(delete),查(has)等等。
他最重要的特點(diǎn)是:元素不能重復(fù),即在Set集合不會(huì)出現(xiàn)相同的元素
Set去重方案1:
思路:因?yàn)镾et集合里面不允許出現(xiàn)重復(fù)值,那我們就可以利用這個(gè)特點(diǎn)將我們的數(shù)組傳進(jìn)去去重
首先new一個(gè)Set集合將要去重的數(shù)組作為參數(shù)傳進(jìn)去,然后創(chuàng)建一個(gè)新數(shù)組,循環(huán)遍歷一下集合,將每個(gè)集合元素添加到新數(shù)組,最后將新數(shù)組返回即可
function fun(arr){ let s1 = new Set(arr); let arr2 = []; for(let item of s1){ arr2.push(item); } return arr2; }
Set去重方案2(使用數(shù)組方法Array.form()):
思路:Array.from(); 能夠把偽數(shù)組,集合轉(zhuǎn)成數(shù)組類型,這個(gè)方法配合上Set集合就剛好符合我們的需求
function fun(arr){ let s1 = new Set(arr); return Array.from(s1); }
Set去重方案3(使用es6展開運(yùn)算符...):
思路:es6展開運(yùn)算符能夠?qū)⒁粋€(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列
function fun(arr){ let s1 = new Set(arr); return [...s1]; }
以上就是js數(shù)組中去除重復(fù)值的幾種方法的詳細(xì)內(nèi)容,更多關(guān)于js數(shù)組去除重復(fù)值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript實(shí)現(xiàn)shuffle數(shù)組洗牌操作示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)shuffle數(shù)組洗牌操作,結(jié)合實(shí)例形式分析了javascript數(shù)組的定義、構(gòu)造、排序等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01不到200行 JavaScript 代碼實(shí)現(xiàn)富文本編輯器的方法
這篇文章主要介紹了不到200行 JavaScript 代碼實(shí)現(xiàn)富文本編輯器的方法,需要的朋友可以參考下2018-01-01ng-options和ng-checked在表單中的高級(jí)運(yùn)用(推薦)
AngularJS是當(dāng)前非常的流行的前端框架,它的語法糖非常多,也極大的方便了前端開發(fā)者。這篇文章主要介紹了ng-options和ng-checked在表單中的高級(jí)運(yùn)用,需要的朋友可以參考下2017-01-01一次記住JavaScript的6個(gè)正則表達(dá)式方法
這篇文章主要介紹了一次記住JavaScript的6個(gè)正則表達(dá)式方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02微信小程序開發(fā)實(shí)現(xiàn)的選項(xiàng)卡(窗口頂部/底部TabBar)頁面切換功能圖文詳解
這篇文章主要介紹了微信小程序開發(fā)實(shí)現(xiàn)的選項(xiàng)卡(窗口頂部/底部TabBar)頁面切換功能,結(jié)合圖文與實(shí)例形式詳細(xì)分析了微信小程序選項(xiàng)卡切換相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05JavaScript實(shí)現(xiàn)簡(jiǎn)易登錄注冊(cè)頁面
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易登錄注冊(cè)頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-01-01詳解JavaScript私有類字段和TypeScript私有修飾符
這篇文章主要介紹了JavaScript私有類字段和TypeScript私有修飾符,對(duì)私有類感興趣的同學(xué),可以參考下2021-04-04