本文實(shí)例講述了JavaScrip數(shù)組去重操作。分享給大家供大家參考,具體如下:
內(nèi)置的for-of方法
<script>var arr=[2,1,1,3,'','','e','e',true,'true',true,false,false,'false',undefined,'undefined',undefined,null,'null',null];function uniqueUseForOf(array) { const temp = []; //一個(gè)臨時(shí)數(shù)組 // 傳入值必須存在,且長(zhǎng)度小于等于1的時(shí)候直接返回?cái)?shù)組 if (array && array.length <= 1) { return array; } else { //遍歷當(dāng)前數(shù)組 for (let x of array) { temp.indexOf(x) === -1 ? temp.push(x) : ''; } } return temp;}uniqueUseForOf(arr);console.log(uniqueUseForOf(arr))</script>
運(yùn)行結(jié)果:
內(nèi)置的forEach方法
<script>var arr=[3,1,1,3,'','','e','e',true,'true',true,false,false,'false',undefined,'undefined',undefined,null,'null',null];function uniqueUseForEach(array) { // 傳入值必須存在,且長(zhǎng)度小于等于1的時(shí)候直接返回?cái)?shù)組 if (array && array.length <= 1) { return array; } else { var temp = []; //一個(gè)臨時(shí)數(shù)組 //遍歷當(dāng)前數(shù)組 array.forEach(function (value, index) { temp.indexOf(value) == -1 ? temp.push(value) : ''; }) return temp; }}uniqueUseForEach(arr);console.log(uniqueUseForEach(arr))</script>
運(yùn)行結(jié)果:
萬能的for方法
<script>var arr=[1,1,'','','e','e',true,'true',true,false,false,'false',undefined,'undefined',undefined,null,'null',null];function uniqueUseFor(array) { var temp = []; //一個(gè)臨時(shí)數(shù)組 //遍歷當(dāng)前數(shù)組 for (var i = 0, j = array.length; i < j; i++) { //很直白,新數(shù)組內(nèi)判斷是否有這個(gè)值,沒有的情況下,就推入該新數(shù)組 temp.indexOf(array[i]) === -1 ? temp.push(array[i]) : ''; } return temp;}uniqueUseFor(arr);console.log(uniqueUseFor(arr))</script>
運(yùn)行結(jié)果:
第一種方法:
<script>var arr = [1, 2, 3, 4, 1, 2, 4, 5, 6];console.log(arr);Array.prototype.unique = function() { var n = [this[0]]; //結(jié)果數(shù)組 for(var i = 1; i < this.length; i++) //從第二項(xiàng)開始遍歷 { //如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i, //那么表示第i項(xiàng)是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組 if(this.indexOf(this[i]) == i) n.push(this[i]); } return n;};console.log(arr.unique());</script>
第二種方法:
<script>var arr = [1,2,3,4,1,2,4,5,6];console.log(arr);Array.prototype.unique = function(){ var n = {}, r = []; //n為hash表,r為臨時(shí)數(shù)組 for (var i = 0; i < this.length; i++) { //遍歷當(dāng)前數(shù)組 if (!n[this[i]]) { //如果hash表中沒有當(dāng)前項(xiàng) n[this[i]] = true; //存入hash表 r.push(this[i]); //把當(dāng)前數(shù)組的當(dāng)前項(xiàng)push到臨時(shí)數(shù)組里面 } } return r;};console.log(arr.unique());</script>
第三種方法:
<script>var arr = [1,2,3,4,1,2,4,5,6];console.log(arr);Array.prototype.unique = function() { var n = []; //一個(gè)新的臨時(shí)數(shù)組 for (var i = 0; i < this.length; i++) //遍歷當(dāng)前數(shù)組 { //如果當(dāng)前數(shù)組的第i已經(jīng)保存進(jìn)了臨時(shí)數(shù)組,那么跳過, //否則把當(dāng)前項(xiàng)push到臨時(shí)數(shù)組里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n;};console.log(arr.unique());</script>
上述三種方法運(yùn)行結(jié)果為:
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.VeVB.COm/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
PS:這里再為大家提供幾款相關(guān)工具供大家參考使用:
在線去除重復(fù)項(xiàng)工具:
http://tools.VeVB.COm/code/quchong
在線文本去重復(fù)工具:
http://tools.VeVB.COm/aideddesign/txt_quchong
更多關(guān)于JavaScript相關(guān)內(nèi)容還可查看本站專題:《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注