js之數組去重的方法
阿新 • • 發佈:2018-05-19
封裝 格式 turn true 最快 函數 func 如果 ons
數組去重?即去除數組中重復的元素...
首先第一種方法就是利用set集合的特性實現去重(其實set用法很多,有興趣的可以多去了解下);
那什麽是set集合呢?set集合是一種新的數據存儲格式;
set語法:new Set()
參數:一個數組
set集合可以稱為史上最快的一種去重方式,如下:
var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1 ]; var set = new Set(arr); console.log(set)
第二種方法則是先封裝好一個函數判斷數組中是否存在某個值,然後再利用這個原理進行數組去重;代碼如下:
//判斷數組中是否存在某個值function has(arr, n){ var bStop = false; for(var i in arr){ if(arr[i] == n){ bStop = true; break; } } return bStop; } function norepeat2(arr){ var newArr = []; for(var i in arr){ if(!has(newArr, arr[i])){ newArr.push(srr[i]) } }return newArr; }
第三種方法呢,則是利用es5中新增的方法indexOf去重;
indexOf()作用:判斷某個字符是否存在。如果存在,則返回相對應的下標,不存在則返回-1;
究竟怎麽實現呢,相信小可愛們都已經想到了~代碼如下:
function norepeat3(arr){ //創建好一個新的數組 var newArr = []; //循環遍歷arr for(var i in arr){ //判斷新數組,如果不存在arr的第i個,不存在則添加到新數組當中 if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]) } }return newArr }
第四種方法則利用sort排序,創建一個新的數組然後傳入原數組的第0個;循環遍歷的時候要註意i的初始值從1開始。代碼如下:
Array.prototype.norepeart4 = function(){ //先排序 this.sort(); //創建一個新的數組並存入數組的第0個 var newArr = [this[0]]; //循環遍歷傳入的數組 for(var i = 1;i<this.length;i++){ //利用每個新數組中值與傳入數組的第i個進行計較,不存在則push到新數組中 if(newArr[newArr.length-1] != this[i]){ newArr.push(this[i]) } } //返回新的數組 return newArr; }
只有想不到沒有寫不出!數組去重的方法很多很多,在這裏就簡單的列舉四種。望大家喜歡(嘻嘻)
js之數組去重的方法