# U2.5、 實戰練習: 找次大值 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15` --- 放兩張牌,最大跟次大: 如果翻出新的牌比最大值大,那也一定比次大值大。 最新的牌就會是最新的牌,而原本最大的牌就變成次大。 所以我翻出來的排比這兩種情形都小就沒事。 如果比次大還大,成為新的次大。 ![](https://i.imgur.com/E6kmG3c.png) --- # U2.6、 實戰練習: 字串轉大寫 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15` ASC II : 把個英文字母編成數字,侷限顯示英語基本 26 個拉丁字母。 任何一個英文字母小寫 -32 = 大寫; 而英文大寫 +32 = 小寫。 ![](https://i.imgur.com/qQpMulf.png) 在 Chrome Console 執行,會印出 "A" 。 --- 判斷小寫轉大寫: 方法一: 看 ASC II code 有無介於 97~122 。 方法二: 比較大小,比較字典順序,在前面出現的比較小,像是: c>= 'a' && c<= 'z' 。 `ASC code -32 ; String.fromCharCode('a'.charCodeAt(0) - 32) ; 'abc'.charCodeAt(0)` , 'a' 內可以有很多個字串,像是 'abcd' ,後面的 ( ) 內表示第幾位的數字。 ![](https://i.imgur.com/KKRujMK.png) --- # U2.7、 實戰練習: 刪除特定字元 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15` 給定個字串 'hello' , 然後要刪除 'l' 。 不要想成刪除,想成略過的情形。 --- ![](https://i.imgur.com/NFQocOt.png) 1. 假設 str 字串是元素 'hello' 。 2. 讓 l 被消失(略過)。 3. 讓 ans 成為字串 。 4. i 現在是 0 。 5. 我們要判斷 str[0] 即 'hello' 不是我要刪除的 h ,我就把他加到 ans 。 6. 不是。 7. 下一圈迴圈。 8. i 現在是 1 。 9. 判斷 str[1] 有無要刪除 。 10. 如果沒有要刪除 , 加到 h 後面,變成 he 。 11. 下一圈。 12. i 現為 2 。 13. 「判斷 str[2] 是否略過 , l 不符合 。 14. 不會加到 ans 後面。 15. 下一圈。 16. i 現在是 3 。 17. 「判斷 str[3] 是否略過 , l 不符合 。 18. 不會加到 ans 後面。 19. 下一圈。 20. i 現在是 4 。 21. 判斷 str[4] 有無要刪除 22. 如果沒有要刪除 , 加到 he 後面,變成 heo 。 23. 下一圈,迴圈現在是 5 ,超出範圍結束。 24. 輸出 ans 。 --- # U2.8、 Project 2 ###### tags: `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15` --- ## 找次小值 與找次大值類似: ![](https://i.imgur.com/TDPWHin.png) 左邊找次大值,右邊找次小。 let arr = [10, 8, 6] let min = Infinity let min2 = Infinity for(let i=0; i<arr.length; i++) { if (arr[i] < min) { min2 = min min = arr[i] } else if (arr[i] < min2) { min2 = arr[i] } } console.log(min, min2) 1. 找次小值的陣列。 2. 把最小值跟次小值初始成一個很小的數值。 3. 把迴圈傳遍整個陣列 , i 現在是 0 。 4. arr[0] , 也就是 10 是不是於最小值 ? 5. 是,目前最小值變成次小值 (Infinity) ,而 arr[0] 變成最小。 6. 下一圈迴圈, i 現在是 1 。 7. arr[1] 8 是不是最小值 ? 8. 是,目前最小值變成次小值 (10) ,而 arr[1] 變成最小。 9. 下一圈迴圈, i 現在是 2 。 10. arr[2] 6 是不是最小值 ? 11. 是,目前最小值變成次小值 (8) ,而 arr[2] 變成最小。 12. 下一圈迴圈, i 現在是 3 , 沒有然後,超出範圍,結束~ 13. 印出 min , min2 。 --- ## 大小寫互換 與轉大寫類似: ![](https://i.imgur.com/UMvLaZO.png) 左邊轉大寫,右邊大小寫互換。 let str = "hELLo" let ans = '' for(let i=0; i<str.length; i++) { let code = str.charCodeAt(i) if (code >= 97 && code <= 122) { ans += String.fromCharCode(code - 32) } else if (code >= 65 && code <= 90) { ans += String.fromCharCode(code + 32) } else { ans += str[i] } } console.log(ans) --- ## 印出因數 跟印出奇數類似: ![](https://i.imgur.com/DZ6m5DC.png) 左邊印出奇數,右印出因數。 let num = 30 for(let i=1; i<=num; i++) { if (num % i === 0) { console.log(i) } } --- ** 圖片均為上課教材中所擷取供本人學習使用。 ---