1. 程式人生 > >JavaScript陣列去重的四種方法

JavaScript陣列去重的四種方法

今天,剛剛參加了公司的筆試,關於陣列去重,後來簡單總結了幾種方法,希共勉,為我打call.......

es5四種方式:

方式一:
Array.prototype.unique1 = function() {
    // 1. 定義陣列
    var temp = []; // 2. 遍歷當前陣列 for(var i = 0; i < this.length; i++) { // 3.如果當前陣列的第i已經儲存進了臨時陣列, // 那麼跳過,否則把當前項push到臨時數組裡面 if (-1 === temp.indexOf(this[i])) { temp.push(this[i]); } } return temp; };
方式二:Array.prototype.unique2 = function() { //1. hash為hash表,r為臨時陣列
 var hash = {}, temp=[]; // 2.遍歷當前陣列 for(var i = 0; i < this.length; i++) { // 3. 如果hash表中沒有當前項 if (!hash[this[i]]) { // 4.存入hash表
hash[this[i]] = true; // 5.把當前陣列的當前項push到臨時數組裡面 temp.push(this[i]); } } return temp; }; 方式三: Array.prototype.unique3 = function() { var n = [this[0]]; for(var i = 1; i < this.length; i++){ if (this.indexOf(this[i]) === i) { n.push(this[i]); } } return n; }; 方式四: Array.prototype.unique4 = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++) { if( this[i] !== re[re.length-1]) { re.push(this[i]); } } return re; }; es6實現方式: Array.prototype.unique = Array.prototype.unique || function () { return [...new Set(this)]; };
希望大家多多指教,不吝賜教~~