javascript數(shù)組去重方法總結(jié)(推薦)
第一種--對(duì)象鍵值去重
Array.prototype.unique1 = function () { var r = {}, temp = [] for (var i = 0; i < this.length; i++) { if (!r[this[i]]) { r[this[i]] = 1 temp.push(this[i]) } } return temp }
第二種--splice刪除去重
Array.prototype.unique2 = function () { for (var i = 0; i < this.length; i++) { for (var j = i + 1; j < this.length; j++) { if (this[i] === this[j]) { this.splice(j, 1) j-- } } } return this }
第三種--利用數(shù)組indexOf方法
// 循環(huán)遍歷當(dāng)前數(shù)組,當(dāng)前不在臨時(shí)數(shù)組的,push Array.prototype.unique3 = function () { var temp = [] for (var i = 0; i < this.length; i++) { if (temp.indexOf(this[i]) === -1) temp.push(this[i]) } return temp }
第四種--數(shù)組下標(biāo)
// 當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組第一次出現(xiàn)的位置不是i,當(dāng)前項(xiàng)即重復(fù),反之 Array.prototype.unique4 = function () { var temp = [this[0]] for (var i = 1; i < this.length; i++) { if (this.indexOf(this[i]) === i) temp.push(this[i]) } return temp }
第五種
// 先排序,找相鄰的項(xiàng) // 這個(gè)會(huì)改變?cè)瓉?lái)數(shù)組的順序 Array.prototype.unique5 = function () { var tempArr = this.sort(), temp = [tempArr[0]] for (var i = 1; i < tempArr.length; i++) { if (tempArr[i] !== temp[temp.length - 1]) temp.push(tempArr[i]) } return temp }
第六種
// 優(yōu)化遍歷數(shù)組 // 獲取沒(méi)重復(fù)的最右一值放入新數(shù)組 Array.prototype.unique6 = function () { var temp = [] for (var i = 0; i < this.length; i++) { for (j = i + 1; j < this.length; j++) { if (this[i] === this[j]) { i++; j = i; } } temp.push(this[i]) } return temp }
第七種--es6 set
Array.prototype.unique7 = function () { var temp = new Set(this) return [...temp] }
第八種--filter
Array.prototype.unique8 = function () { return this.filter(function (ele, index, self) { return self.indexOf(ele) === index; }) }
以上所述是小編給大家介紹的javascript數(shù)組去重方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript運(yùn)行機(jī)制之this詳細(xì)介紹
這篇文章主要介紹了javascript運(yùn)行機(jī)制之this,需要的朋友可以參考下2014-02-02JavaScript中把數(shù)字轉(zhuǎn)換為字符串的程序代碼
本篇文章是對(duì)JavaScript中把數(shù)字轉(zhuǎn)換為字符串的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Javascript基礎(chǔ)_嵌入圖像的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇Javascript 基礎(chǔ)_嵌入圖像的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Javascript中indexOf()和lastIndexOf應(yīng)用方法實(shí)例
這篇文章主要介紹了JavaScript中的indexOf()和lastIndexOf()方法使用實(shí)例,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),有需要的朋友可以參考下。2016-08-08JavaScript ES6中的簡(jiǎn)寫(xiě)語(yǔ)法總結(jié)與使用技巧
我們?cè)诳淳帉?xiě)的JS ES6代碼時(shí)經(jīng)常會(huì)看到許多簡(jiǎn)寫(xiě)的語(yǔ)法,本篇文章就為大家一一介紹JavaScript ES6可以簡(jiǎn)寫(xiě)的語(yǔ)法2018-12-12關(guān)于js的三種使用方式(行內(nèi)js、內(nèi)部js、外部js)的程序代碼
本文主要和大家介紹關(guān)于js的三種使用方式(行內(nèi)js、內(nèi)部js、外部js)的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家2018-05-05自動(dòng)化測(cè)試讀寫(xiě)64位操作系統(tǒng)的注冊(cè)表
本文主要介紹自動(dòng)化測(cè)試讀寫(xiě)64位操作系統(tǒng)的注冊(cè)表,這里提供詳細(xì)的教程來(lái)實(shí)現(xiàn)自動(dòng)化讀寫(xiě)64位操作系統(tǒng)的注冊(cè)表,希望能幫助測(cè)試軟件的朋友,有興趣的小伙伴可以參考下2016-08-08