3 flat函式設計

2022-05-16 09:55:51 字數 779 閱讀 9660

演算法題

輸入:['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]

輸出:a,b,c,2,d,e,f,g,3,4

const arr = ['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]

//方式一:遞迴(**太多已省略)

//方式二:tostring(格式轉換) 隱式型別轉換 [1,2,3].tostring() = 1,2,3

//方式三:valueof(格式轉化),和tostring差不多,把tostring換成valueof

/*const flag = (arr) =>

array.prototype.tostring = tostring // 還原

return arr + '' // 隱式型別轉換,這裡arr會先呼叫valueof結果返回不是基本資料型別則繼續呼叫tostring然後結束,否則會報錯

}console.log(flag(arr))

*///

方式四:iterator 對新型的資料結構進行遍歷

array.prototype[symbol.iterator] = function

()

return

} else}}

}}

const flag = function

(arr)

return r.join(',')

}console.log(flag(arr))

手動實現flat函式

首先何謂陣列扁平化?我也不會解釋,直接上 就很直觀 這是原始陣列,可以看到巢狀了很多層的,也就是很多維陣列 let arr 1 2,2,3 10,11 3,4 5,6,7,8 9 array.flat函式支援傳入乙個數值型別引數n,代表我們希望的能夠扁平化的維數 2,2 3,10 11,3 4,5,...

3 雜湊函式設計 直接定址法

雜湊函式的設計原則 1.計算簡單 你說設計乙個演算法可以保證所有的關鍵字都不會產生衝突,但是這個演算法需要很複雜的計算,會耗費很多時間,這對於需要頻繁地查詢來說,就會大大降低查詢的效率了。因此雜湊函式的計算時間不應該超過其他查詢技術與關鍵字比較的時間。2.雜湊位址分布均勻 我們前面也提到衝突帶來的問...

設計模式(3)

命令模式 將 請求 封裝成物件,以便使用不同的請求 佇列 日誌來引數化其他物件。命令模式也支援可撤銷的操作。1 將動作的請求者從動作的執行者物件中解耦出來。2 在被解耦的兩者之間是通過命令物件進行溝通的,命令物件封裝了接收者和乙個或一組動作。3 呼叫者通過呼叫命令物件的execute 發出請求,這會...