iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 5
0
Software Development

用JS來刷刷HackerRank系列 第 5

(5)HackerRank-Day2:Conditional Statements: If-Else,Switch(javaScript Answer)

有點想快點結束這無聊的JS
後面的題目也差不多了,
應該夠讓我()使用30天

所以接下來js都是兩題兩題的來

那麼我們開始吧GOGOGO

題目
Conditional Statements: If-Else
舉例輸入

11

舉例輸出

D

解析
這是個很經典的連續else if
其實像這種題目真的很煩
沒啥技術含量,也沒啥技術點
就是認真點把每個節點處理好

function getGrade(score) {
    let grade;
    // Write your code here
    if (25 < score && score <= 30) {
        grade = "A";
    } else if (20 < score && score <= 25) {
        grade = "B";
    } else if (15 < score && score <= 20) {
        grade = "C";
    } else if (10 < score && score <= 15) {
        grade = "D";
    } else if (5 < score && score <= 10) {
        grade = "E";
    } else if (0 <= score && score <= 5) {
        grade = "F";
    }

    return grade;
}

但因為工程師如果只是這樣子很不負責任
而且看起來很弱,可以指敲一行就不敲兩行
這是我的宗旨

function getGrade(score) {
    if (score > 25) {
        return "A";
    }
    else if (score > 20) {
        return "B";
    }
    else if (score > 15) {
        return "C";
    }
    else if (score > 10) {
        return "D";
    }
    else if (score > 5) {
        return "E";
    }
    else {
        return "F";
    }
}

這樣是不是看起來就清爽多了?
當js遇到return時就不會運行接下來的程式碼了
這點非常好用


題目
Conditional Statements: Switch
舉例輸入

adfgt

舉例輸出

A

解析
這題就是很單純的,他給你一個字串
取得第一個字,將他歸類在他所給定的分類中
那麼我們速速結束掉今天吧

function getLetter(s) {
    let letter;
    // Write your code here
    switch (s[0]) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            letter = "A";
            break;
        case 'b':
        case 'c':
        case 'd':
        case 'f':
        case 'g':
            letter = "B";
            break;
        case 'h':
        case 'j':
        case 'k':
        case 'l':
        case 'm':
            letter = "C";
            break;

        default:
            letter = "D"
            break;
    }
    return letter;
}

有沒有更短的寫法?
當然是有的

function getLetter(s) {
    // Write your code here
    switch (s[0]) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return  "A";
        case 'b':
        case 'c':
        case 'd':
        case 'f':
        case 'g':
            return "B"; 
        case 'h':
        case 'j':
        case 'k':
        case 'l':
        case 'm':
            return "C";
        default:
            return "D" 
    }
    
}

但這個寫法本身不太好
雖然js會直接return就不執行下面程式碼
因為使用switch使用break是約定俗成的寫法
這樣會增加日後維護的困擾有時候可能還會有不可預估的錯誤;
所以不想被同事幹,第一種方式會是比較妥當的

本日心得
預計十天把JS處理完
接下來就是爆炸的面試題目啦


上一篇
(4)HackerRank-Day 1: Let and Const(javaScript Answer)
下一篇
(6)HackerRank-Day 2: Loops,Day 3: Arrays(javaScript Answer)
系列文
用JS來刷刷HackerRank30

尚未有邦友留言

立即登入留言