數(shù)組頻率統(tǒng)計
創(chuàng)建一個對象,其中數(shù)組的唯一值作為鍵,出現(xiàn)頻率作為值。使用 Array.prototype.reduce() 將唯一值映射到對象的鍵,每次遇到相同的值時都會使頻率加1。
統(tǒng)計數(shù)組中唯一值的頻率很容易,但如果數(shù)據(jù)經(jīng)常發(fā)生變化頻率就需要重新計算。為此我們最好創(chuàng)建自定義數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù)。該數(shù)據(jù)結(jié)構(gòu)將能夠跟蹤其包含的值的頻率并在需要更新它們。以下是實現(xiàn)此類數(shù)據(jù)結(jié)構(gòu)的方法:
通過繼承來利用內(nèi)置的 Map 類。
擴展以拋出錯誤,防止破壞添加到數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)。
定義一個
add()
方法,該方法將接收一個值并在數(shù)據(jù)結(jié)構(gòu)中增加其計數(shù),不存在則設(shè)為1。擴展以減少數(shù)據(jù)結(jié)構(gòu)中存在的值的計數(shù)。值為1時直接刪除。
定義一個
sorted()
方法,該方法將返回按頻率排序的值數(shù)組。 使用按頻率對值進行排序,使用返回值。ascending
FrequencyMap
的數(shù)據(jù)結(jié)構(gòu),它繼承了內(nèi)置的Map
標簽: