# 【AC學習筆記】尋找最長單字 ###### tags: `JavaScript` `AC學習筆記` ## 目標 可以找出一個英文句子裡最長的單字(假設傳入的字串一定有 2 個以上的單字,而且沒有標點符號);如果有多個單字長度相同,則回傳第一個字,例如: * `I am playing computer games` →回傳computer * `Have a nice day`→回傳Have ## 運用工具 1. [`String.prototype.split()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) 2. [`Array.prototype.forEach()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) ## Step1. 利用split()將傳入的字串切割並放到新陣列 ``` str.split([separator[, limit]]) ``` 第一個參數separator為我們設定要切割的節點,limit則可以限制切割的數量。 以這題為例,我們希望將句子內的單字切割開來,所以選用字與字之間的空格當作節點,可以寫成: ``` const array = sentence.split(" ") ``` 這樣切割下來的單字就被放進array這個陣列內了 ## Step2. 利用forEach迴圈找出最長單字 ``` forEach(callbackFn) ``` forEach()的參數為一個callback函式,陣列中的每個元素會輪流在這個函式中執行。 這裡我們的函式主要就是比較每個單字的長度,先創造一個變數存放最長的單字,後續如果找到更長的單字則取代原本的單字,這裡我們搭配[箭頭函式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)可以寫成: ``` let longestWord = "" array.forEach(string => { if (string.length > longestWord.length) { longestWord = string } }) ``` 或是我們也可以使用`for...of`迴圈來完成 ``` let longestWord = "" for (let string of array) { if (string.length > longestWord.length) { longestWord = string } } ``` ## step3. 最後封裝成一個function就完成啦! ```javascript= function findLongestWord(sentence) { const array = sentence.split(" ") let longestWord = "" array.forEach(string => { if (string.length > longestWord.length) { longestWord = string } }) return longestWord } ``` [完整程式碼連結](https://replit.com/@rz0585720/find-longest-word-starter#index.js)