2024 JavaScript - 每日刷題任務
はじめに
在 codewars 的每日刷題,題目主要會跟著 六角學院 - 2024 JavaScript 工程師養成直播班
的每日刷題題目走, 無聊的話再自己多刷幾題。
其他還有 ↓
Since 2024-09-30
Day 1:Even or Odd
Even or Odd | #8kyu
Even or Odd - 偶數或奇數
目前個人等級:8 kyu
Description: 建立一個 function,使用一個整數做為參數,如果參數為偶數回傳 "Even" 如果為奇數回傳 "Odd"
我的解法
function evenOrOdd(number) {
return number % 2 === 0 ? 'Even' : 'Odd';
}
反饋與思考
最優解
Do I get a bonus?
Do I get a bonus? | #8kyu
Do I get a bonus? - 我會有獎金嗎?
目前個人等級:8 kyu
Description:建立一個 function,
你有兩個參數:salary 為整數、bonus 為布林值,
如果布林值為真,你可以得到 10 倍的獎金。
反之你只能得到原本的薪水。
回傳請帶上金額符號 "£"
我的解法
function bonusTime(salary, bonus) {
if (bonus === true) {
return `£${salary * 10}`;
} else {
return `£${salary}`;
}
}
反饋與思考
- 如果只有是跟不是,可以改寫:
function bonusTime(salary,bonus){
return bonus === true ? `£${salary * 10}` : `£${salary}`;
}
最優解
同上
Beginner Series 2 Clock
Beginner Series 2 Clock | #8kyu
Beginner Series 2 Clock - 初學者系列2 時鐘
目前個人等級:8 kyu
Description:寫一個函數,用毫秒顯示時、分、秒。例如:m=1, s=1, result = 61000
輸入條件:
0 <= h <= 23
0 <= m <= 59
0 <= s <= 59
我的解法
function past(h, m, s){
if( 0 <= h <=23 , 0 <= m <= 59, 0 <= s <= 59){
return h*3600000 + m*60000 + s*1000;
}else{
return '請重新輸入';
}
}
反饋與思考
- 算時間好難…
- 又重新看了一下 if 的寫法
- 又重新看了一下流程圖拆解的方法
最優解 (不對呀?沒有驗證呀?)
function past(h, m, s){
return ((h*3600)+(m*60)+s)*1000;
}
Sum of positive
Sum of positive | #8kyu
Sum of positive - 加總陣列中的正數
目前個人等級:8 kyu
Description:你有一個陣列數字,請回傳加總所有正數的總額
我的解法
function positiveSum(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > 0) {
sum += arr[i];
}
}
return sum;
}
反饋與思考
- 之後復習完 for 迴圈之後再回來重做一次
最優解
除了 for 迴圈,也可以用 reduce()
Day 2 : Basic Mathematical Operations
Basic Mathematical Operations | #8kyu
Basic Mathematical Operations -
依條件運算並且輸出運算結果及過程
目前個人等級:8 kyu
Description:建立一個執行基本數學運算的函數。
我的解法
function basicOp(operation, value1, value2){
let result = 0;
switch (operation){
case '+':
result = value1 + value2;
break;
case '-':
result = value1 - value2;
break;
case '*':
result = value1 * value2;
break;
case '/':
result = value1 / value2;
break;
}
return result;
}
反饋與思考
- 在本週刷題裡面剛好也有一樣的題目,剛好又可以再練習一次 switch 的用法。
最優解
switch 是最優解
Day 3 : Thinkful - Logic Drills: Traffic light
Thinkful - Logic Drills: Traffic light | #8kyu
Thinkful - Logic Drills: Traffic light -
邏輯練習:紅綠燈
目前個人等級:8 kyu
Description:
請寫一個函數依照 綠色 => 黃色 => 紅色的順序來改變紅綠燈
使用字串表示目前紅綠燈狀態,並回傳變更後的紅綠燈字串
我的解法
function updateLight(current) {
switch (current){
case 'green':
changeLight = 'yellow';
return changeLight;
break;
case 'yellow':
changeLight = 'red';
return changeLight;
break;
case 'red':
changeLight = 'green';
return changeLight;
break;
}
console.log(changeLight);
}
反饋與思考
- 可以用 switch 也可以用 if ,最簡單就直接 return 結束 。
return current === 'yellow' ? 'red' : current === 'green' ? 'yellow' : 'green';
最優解
這題也沒有最優解只要邏輯通了都可以,
只是使用 switch 的話,不需要再加一個 changeLight 的變數,
本來也是直接這樣寫,後來怕沒有賦值會無效所以又再加上變數賦值。(想多了ww)
function updateLight(current) {
switch (current) {
case 'green':
return 'yellow';
break;
case 'yellow':
return 'red';
break;
case 'red':
return 'green';
break;
default:
throw 'Error: wrong input';
break;
}
}
Day 4 : Remove String Spaces
Remove String Spaces | #8kyu
Remove String Spaces -
清除字串的空白
目前個人等級:8 kyu
Description:
清除字串中的所有空白之後再回傳清除後的資料
我的解法
function noSpace(x){
return x.trim().replace(/\s+/g,'')
}
反饋與思考
- 學了一個新方法 😃,本來只會刪除字串左右的空白,
現在學了刪除中間字串的空白還有正則表達式(regex)
最優解
同上(但不需要刪除字串左右空白)
Day 5 : The Feast of Many Beasts
The Feast of Many Beasts | #8kyu
The Feast of Many Beasts - 野獸們的盛宴
目前個人等級:8 kyu
Description:
野獸們各自帶一盤料理來參加盛宴,但有一個規則:菜餚的開頭與結尾必須跟野獸的名字一樣。
我的解法
function feast(beast, dish) {
let beastFirstChar = beast.charAt(0);
let beastLastChar = beast.charAt(beast.length - 1);
let dishFirstChar = dish.charAt(0);
let dishLastChar = dish.charAt(dish.length - 1);
return beastFirstChar === dishFirstChar && beastLastChar === dishLastChar ? true : false;
}
反饋與思考
- 學了一個新的方法
charAt()
- 但我想的太複雜了XD
最優解
function feast(beast, dish) {
return beast[0] === dish[0] && beast[beast.length - 1] === dish[dish.length - 1]
}
Discussion