前言 - Prologue
在 JavaScript 中,reduce()
是一個非常有用的方法,可以將一個陣列中的元素累積為單一值。除了用於計算總和或平均值等數值運算,reduce()
還可以應用於處理文本資料,例如:統計單詞頻率。
正文 - Main text
在開始之前先借簡短介紹一下,什麼是 reduce()
?再引入如何計算單詞出現頻率~
什麼是 reduce()
?
reduce()
是 JavaScript 陣列中的一個方法,它將一個函數作用在陣列的每一個元素上,從左到右將元素歸納成單一值。這個方法需要一個累加器 (accumulator)
參數和一個元素 (current value)
參數,並且在每一次執行時將累加器更新為上一次執行後的返回值。
reduce()
的語法:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
}, initialValue);
其中,第一個參數是一個回調函數 (callback function)
,它包含四個參數:
accumulator
:累加器,它累加每次回調函數的返回值,初始值可以在 reduce()
方法的第二個參數設置。
currentValue
:當前元素的值。
currentIndex
:當前元素的索引。
array
:當前正在操作的陣列。
reduce()
的回調函數可以返回任意值,並且返回值會成為下一次回調函數的 accumulator
參數。最終 reduce()
返回的是累加器的最終值。
簡單來說,reduce()
可以對一個陣列進行歸納操作,最終得到一個值。它在許多場合都很有用,例如:統計陣列中元素的總和、平均值、最大值、最小值等等。
陣列中單詞頻率計算
使用 reduce()
統計陣列中每個單詞出現的頻率,並將單詞轉為小寫以不區分大小寫。
範例: (輸出可以至 CodePen 內的 console 查看輸出結果)
句子中單詞頻率計算 (函數)
使用 replace()
去除句子中的標點符號、toLowerCase()
將單詞轉為小寫,並使用 reduce()
統計單詞頻率。
範例: (輸出可以至 CodePen 內的 console 查看輸出結果)
陣列中單詞頻率計算 (函數)
使用 reduce()
統計陣列中每個單詞出現的頻率,並將單詞轉為小寫以不區分大小寫。
範例: (輸出可以至 CodePen 內的 console 查看輸出結果)
參考資料 - Reference
[1] Array.prototype.reduce() - JavaScript | MDN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
[2] reduce方法 -- 统计每个元素出现的次数 - 掘金
https://juejin.cn/post/7021476750198571044
[3] JavaScript reduce 在做什麼? - 客座投稿 | W3HexSchool
https://w3c.hexschool.com/blog/a2cb755f
後記 - Epilogue
「多爬文多學習,GPT 不是萬能,我們是機師,GPT 充其量只是副機師。」