JS 陣列去重實現,一道面試題

2021-06-22 03:10:34 字數 1217 閱讀 6884

今日去某公司面試web前端,本來對這個公司感覺一般,但是技術面試兩面一共從下午2:30到5:30,各種問題問,主要以js為主,頓時對這個公司有了好的印象,個人感覺面試的水平高最起碼表明乙個公司的態度。問的還算是很給力,都是一般不幾個常用到的,但是想一想確實還挺實用,有了這次思路,下次自己玩前端的時候可以把這些思想用上,感覺還是收穫一些知識的。

其中有一道題本來挺簡單的,但是細想有點不一樣,當時連續面了2個多小時了,有點被唬住了,寫的不是很好,感覺不爽,回來寫了一下,還蠻簡單的,不知道當時就被嚇到了。下面將原題貼出,並附上**有興趣的朋友們可以看一下。

題目:js實現陣列去重,要求 arr = [1, 2, 3, 4, 5, "1", "2", 3, 4, 5], arr.strice() ==> [1, 2, 3, 4, 5, "1", "2"]。注意要求要改變之前的arr為去重之後的。

題目分析:本來挺簡單的,先回答兩個迴圈(最次策略);然後下想了一下回答使用乙個obj={},匹配屬性的方法obj[key] == undefined的方式(類似簡易hash)。可是有點坑的是有個1 和 「1」不算相同,這樣一般的hash策略就不行了。於是乎當時就有點蒙了。感覺對hash新增什麼別的判斷會降低效率。。。。

array::strice = ->

hash = {}

len = this.length

i = 0

while i < len

if hash[this[0]] == undefined

hash[this[0]] = this[0]

this.push this[0]

this.shift()

else if typeof this[0] == typeof hash[this[0]]

this.shift()

else

this.push this[0]

this.shift()

i++return this

arr = [1,2,'3',4,3,1,"2",5,6,5,2,10]
console.log arr.strice()
console.log arr

時間複雜度n,空間複雜度 l(「去重」後的陣列長度,這裡的去重是指嚴格去重,2和「2」算重複)。

覺得這個題還是蠻有新意的不小心真覺得很彆扭的。

js陣列去重 面試題

首先再講陣列去重之前,先引進乙個小的知識點indexof indexof 方法可返回某個指定的字串值在字串中首次出現的位置,eg如下 var arr 1 2,3 4,5 var index arr.indexof 1 1,3,5 console.log index index 輸出的是0 2 4 v...

Js面試題(一) js實現陣列去重怎麼實現?

方法1 建立乙個新的臨時陣列來儲存陣列中已有的元素 方法2 使用雜湊表儲存已有元素 方法3 使用indexof判斷陣列元素第一次出現的位置是否為當前位置 方法4 先排序再去重 第一種方法和第三種方法都使用了indexof 這個函式的執行機制也會遍歷陣列 第二種使用了雜湊表,是最快的 第三種也有乙個排...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...