面試中經常會考到數組的去重。作為一名合格的前端開發者,不知道幾種去重方法是在不應該。廢話不多說直接開擼……
一、indexOf()方法
實現思路:使用indexOf()方法來判斷新數組中是否有這個值,若沒有則將這個值push到數組中
//先定義一個數組 var arr = [,'','',,,,,,,,]; function remov(array) { var arr=[]; for (var i=,len=array.length;i<len;i++){ if (arr.indexOf(array[i])==-){ arr.push(array[i]) } } return arr; } console.log(remov(arr));//[, "", "", , , , , , , ]代碼很簡單,說明一點indexOf()是ES5中的方法,不兼容IE8一下,所以用之前考慮下兼容性問題。
二、sort()+判斷相鄰兩個數
實現思路:先使用數組的sort()方法將數組升序排序,再判斷相鄰的兩個數是否相等,若不相等則將前面的數push到新創建的數組中
var arr = [,'','',,,,,,,,]; function remov(array) { var linArr = []; array.sort(); for (var i = , len = array.length; i < len; i++) { if (array[i + ] !== array[i]) { linArr.push(array[i]) } } return linArr; } console.log(remov(arr));//["", , , , , "", , , , ]三、創建一個空對象和一個空數組
實現思路:for循環中判斷對象中是否有當前項,若沒有則將當前項push到新創建的數組中,同時將當前項作為對象的一個屬性賦值為1
var arr = [,'','',,,,,,,,]; function remov(array) { var res = []; var obj={}; for (var i=;i<array.length;i++){ if(!obj[array[i]]){ res.push(array[i]); obj[array[i]]=; } } return res; } console.log(remov(arr));//[, "", "", , , , , , ]至于這里為什么將當前項作為對象的一個屬性賦值為1,比如說數組中的5,第一次對象中沒有5這個屬性,我們將其push到新數組中,若不對5這個屬性進行賦值,下次檢測到第二個5時對象中同樣沒有又要將其push到新數組中。所以這里將當前項作為對象的一個屬性賦值為1,當然也可以賦值為其他值。說的有點 主站蜘蛛池模板: 平武县| 长乐市| 化州市| 弋阳县| 韶关市| 云霄县| 无极县| 西宁市| 高台县| 滨州市| 内黄县| 炉霍县| 拉孜县| 达孜县| 德格县| 扎兰屯市| 六盘水市| 太白县| 兴义市| 建平县| 中超| 靖远县| 乃东县| 尚志市| 宜君县| 阜城县| 连江县| 曲阜市| 崇州市| 巨鹿县| 宝清县| 新竹市| 财经| 读书| 赤水市| 镇平县| 临澧县| 民权县| 义马市| 福建省| 九江市|