javascript中數組去重複方式匯總

來源:互聯網
上載者:User

標籤:

JavaScript中關於數組去重複的方式很多,下面匯總了常見的幾種實現方式。

 1 /*實現一:基於原型擴充*/ 2 Array.prototype.removeDuplicate = function() { 3     var arrObj = {}, 4         newArr = [], 5         len = this.length; 6     for(var i = 0; i < len; i++) { 7         var value = this[i], 8             type = (typeof value) + value; 9         if(arrObj[type] === undefined) {10             newArr.push(value);11             arrObj[type] = len;12         }13     }14     return newArr;15 }16 17 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];18 s.removeDuplicate(); //[1, 2, 3, 4, 5, 6, 7]19 20 /*實現二:去除重複後數組為字串*/21 var removeDuplicate = function(array) {22     array = array || [];23     var arrObj = {},24         len = array.length;25     for(var i = 0; i < len; i++) {26         var data = array[i];27         if(typeof(arrObj[data]) === ‘undefined‘) {28             arrObj[data] = 1;29         }30     }31     array.length = 0;32     for(var arr in arrObj) {33         array[array.length] = arr;34     }35     return array;36 }37 38 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];39 removeDuplicate(s); //["1", "2", "3", "4", "5", "6", "7"]40 41 /*實現三:去除重複後數組為數字*/42 var removeDuplicate = function(array) {43     var str = [];44     for(var i = 0, len = array.length; i < len; i++) {45         !RegExp(array[i], ‘g‘).test(str.join(‘,‘)) && (str.push(array[i]));46     }47     return str;48 }49 50 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];51 removeDuplicate(s); //[1, 2, 3, 4, 5, 6, 7]52 53 /*實現四:hashtable的結構記錄已有的元素,這樣就可以避免內層迴圈*/54 var removeDuplicate = function(array) {55     var hash = {},56         newArr = [];57     for(var i = 0, elem; (elem = array[i]) != null; i++) {58         if(!hash[elem]) {59             newArr.push(elem);60             hash[elem] = true;61         }62     }63     return newArr;64 }65 66 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];67 removeDuplicate(s); //[1, 2, 3, 4, 5, 6, 7]

上面四種實現方式中,都實現了數組去重複的需求,但在實現方式和效能上面存在一定的差異,其中實現四的方式效率最高。

javascript中數組去重複方式匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.