Released 2023-03-28

Modified 2023-03-28

Tech

800Words (4min read)

透過 reduce() 計算單詞出現頻率

Title Image

Photo by Sincerely Media on Unsplash

前言 - Prologue

在 JavaScript 中,reduce() 是一個非常有用的方法,可以將一個陣列中的元素累積為單一值。除了用於計算總和或平均值等數值運算,reduce() 還可以應用於處理文本資料,例如:統計單詞頻率。

正文 - Main text

在開始之前先借簡短介紹一下,什麼是 reduce()?再引入如何計算單詞出現頻率~

什麼是 reduce()

reduce() 是 JavaScript 陣列中的一個方法,它將一個函數作用在陣列的每一個元素上,從左到右將元素歸納成單一值。這個方法需要一個累加器 (accumulator) 參數和一個元素 (current value) 參數,並且在每一次執行時將累加器更新為上一次執行後的返回值。

reduce() 的語法:

array.reduce(function(accumulator, currentValue, currentIndex, array) {
// 累加器邏輯處理
}, initialValue);

其中,第一個參數是一個回調函數 (callback function),它包含四個參數:

  1. accumulator:累加器,它累加每次回調函數的返回值,初始值可以在 reduce() 方法的第二個參數設置。
  2. currentValue:當前元素的值。
  3. currentIndex:當前元素的索引。
  4. 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 充其量只是副機師。」

Read more from Tech
lightbox-image
Toggle Button - Red Pandas Icons by svgrepo.com

Copyrights © 2023 Kama, All Rights Reserved.