js陣列去重

2022-03-23 10:46:41 字數 995 閱讀 1744

js陣列去重也是老生常談的話題了,怎麼驅蟲涅,最容易想到的就是直接新建乙個陣列,存放去重後的陣列。由於nan這種神奇的數字連他自己都不認識自己,所以目標陣列如果需要去重nan,需要用isnan來判斷一下,ok,碼歸正傳,**如下:

function unique01(arr)

else

if(isnan(arr[i]))

else}}

return

result;

}else

}

這種方法雖然實現上沒太大難度,缺點確實很明顯,一是不夠快,時間複雜度o(n)2。二是費空間,需要新開乙個陣列來存放結果。

怎麼才能不費空間呢,直接在原陣列上操作,最後返回這個陣列,嗯,思路有了,就看如何實現了,繼續放碼..

function

unique02(arr)

for(var j=0;j)

else

if(arr[j]===arr[i])}}

return

arr;

}else

}

仔細看看,這個操作還是有點水平的,雖然時間複雜度依然是o(n)2,起碼空間不浪費了,當然,我們的目標不會止步於此的

function

unique03(arr),val,type;

for(var i=0;i)

else

if(obj[val].indexof(type)==-1)

}return

result;

}else

}

是不是更6了,沒錯,這次我們把時間複雜度降到了o(n),不過有點遺憾的是空間浪費的有點多,用空間的代價換取時間。究竟值不值呢,你說了算。

當然,沒有最6,只有更6,es6中的**其實這樣寫

function

unique04(arr)

是的,你沒有看錯,只有一行,一行**,搞定一切,就是這個feel。

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...