面試中經常會考到數組的去重。作為一名合格的前端開發者,不知道幾種去重方法是在不應該。廢話不多說直接開擼……
一、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,當然也可以賦值為其他值。說的有點 主站蜘蛛池模板: 隆昌县| 九江县| 武夷山市| 禹州市| 澜沧| 酒泉市| 宜君县| 梁山县| 扬州市| 金塔县| 响水县| 邹城市| 张家川| 莫力| 宜川县| 高碑店市| 正安县| 重庆市| 屏东市| 四会市| 温州市| 东港市| 平安县| 安仁县| 鲜城| 东源县| 临澧县| 扶风县| 苏尼特左旗| 古田县| 乌鲁木齐县| 彰化市| 景东| 西吉县| 新丰县| 宜春市| 博客| 中江县| 呼玛县| 红安县| 正镶白旗|