js數組操做-數組去重

第一個和第二個,都是對新數組或新json進行操做,而第三個是對原數組自己進行indexOf。
第一個是用新數組的indexOf來判斷是否有重複元素,而第二個是經過nHash[item]來判斷是否存在。

  var
array = [1, 2, 3, 2, 1]; Array.prototype.unique1 = function () { var nArray = []; // 新建一個數組 console.log(this, 'this的值'); for (var i = 0, len = this.length; i < len; i++) { //遍歷當前數組 var item = this[i]; //若是當前數組的第i沒有保存在臨時數組中,那麼將當前項push到臨時數組裏面 if ( nArray.indexOf(item) == -1 ) { // 數組經過經過indexOf()來判斷這個item是否存在這個新數組中 nArray.push(item); }; }; return nArray; // 返回這個新數組 } console.log(array, array.unique1()); var array2 = [1, 2, 3, 2, 1]; Array.prototype.unique2 = function() { var nArray = [], nHash = {}; // n爲hash表,r爲臨時數組 for (var i = 0, len = this.length; i < len; i++) { var item = this[i]; console.log(nHash[item]); // undefined 3, true 2 if (!nHash[item]) { // 若是hash表中沒有當前項 對象經過nHash[item]即value爲undefined || true來判斷是否存在。 nHash[item] = true; // 存入hash表 nArray.push(item); //把當前數組的當前項push到臨時數組裏面 }; }; return nArray; }; console.log(array2.unique2()); var array3 = [1, 2, 3, 2, 1]; Array.prototype.unique3 = function() { var nArray = []; nArray.push(this[0]); for (var i = 1, len = this.length; i < len; i++) { // 從一開始減小一次循環,從第二項開始遍歷 var item = this[i]; if (this.indexOf(item) == i) { // 對原數組自身進行操做 //若是當前數組的第i項在當前數組中第一次出現的位置不是i, //那麼表示第i項是重複的,忽略掉。不然存入結果數組 nArray.push(item); }; }; return nArray; }; console.log(array3.unique3());
相關文章
相關標籤/搜索