日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

1、利用 indexOf() 方法之一

Array.prototype.unique = function(){
 var temp = [];
 for (var i = 0;i < this.length;i++){
 // 如果當(dāng)前數(shù)組的第 i 項(xiàng)已經(jīng)保存到了臨時(shí)數(shù)組,那么跳過(guò)
 if(temp.indexOf( this[i] ) == -1){
 temp.push( this[i] );
 }
 }
 return temp;
}

2、利用 indexOf() 方法之二

Array.prototype.unique = function(){
 var temp = [ this[0] ];
 for (var i = 1;i < this.length;i++){
 // 如果當(dāng)前數(shù)組元素在數(shù)組中第一次出現(xiàn)的位置不是i,說(shuō)明是重復(fù)元素
 if(this.indexOf( this[i] ) == i){
 temp.push( this[i] );
 }
 }
 return temp;
}

3、優(yōu)化遍歷數(shù)組法

Array.prototype.unique = function(){
 var hash=[];
 // 雙層循環(huán),外循環(huán)表示從 0 到 arr.length
 for (var i = 0; i < this.length; i++) {
 // 內(nèi)循環(huán)表示從 i+1 到 arr.length
 for (var j = i+1; j < this.length; j++) {
 if(this[i]===this[j]){
 // 檢測(cè)到有重復(fù)值時(shí)終止當(dāng)前循環(huán)同時(shí)進(jìn)入外層循環(huán)的下一輪判斷
 ++i;
 }
 }
 // 將沒重復(fù)的右邊值放入新數(shù)組
 hash.push(this[i]);
 }
 return hash;
}

4、排序后再進(jìn)行數(shù)組去重

Array.prototype.unique = function(){
 this.sort(function( a,b ){ return a-b; });
 var temp = [ this[0] ];
 for (var i = 0;i < this.length;i++){
 if( this[i] != this[i-1]){
 temp.push( this[i] );
 }
 }
 return temp;
}

5、利用數(shù)組 filter 方法過(guò)濾

Array.prototype.unique = function unique() {
 var res = this.filter(function(item, index, array) {
 return array.indexOf(item) === index;
 });
 
 return res;
}

6、利用對(duì)象屬性的唯一性

Array.prototype.unique = function(){
 var temp = [],hash = {}; // hash 作為哈希表
 for (var i = 0;i < this.length;i++){
 if(!hash[ this[i] ]){ // 如果哈希表中沒有當(dāng)前項(xiàng)
 hash[ this[i] ] = true;
 temp.push(this[i])
 }
 }
 return temp;
}

7、利用 ES6 set 數(shù)據(jù)結(jié)構(gòu)

Array.prototype.unique = function(){
 return Array.from(new Set(this));
}

上述七種方法中,經(jīng)測(cè)試(測(cè)試數(shù)組元素個(gè)數(shù)從 1 萬(wàn)個(gè)- 1000 萬(wàn)個(gè)),代碼運(yùn)行速度從上到下依次降低,其中方法 1 和方法 2 速度差異不大,速度最慢,方法 3 的具體運(yùn)行速度和數(shù)組具體情況相關(guān),方法 4 速度比方法 1,2,3 快,但比方法 5,6,7 慢得比較多,方法 5,6,7 運(yùn)行速度最快,且運(yùn)行速度差異不大,不過(guò)鑒于 set 是 ES6 新加內(nèi)容,在實(shí)際開發(fā)環(huán)境中,推薦使用穩(wěn)定性和速度都比較不錯(cuò)的方法 5 和方法 6 。

拓展:若重復(fù),則去掉該元素

function unique(arr){
 var hash=[];
 for (var i = 0; i < arr.length; i++) {
 if(arr.indexOf(arr[i])==arr.lastIndexOf(arr[i])){
 hash.push(arr[i]);
 }
 }
 return hash;
}

分享到:
標(biāo)簽:數(shù)組 JS
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定