ときたの技術ノート

アウトプット!!!近道はない。泥臭く頑張れ。

【リファクタリングメモ】vol.2 -JavaScript -

問題

下記コードをリファクタリングすること。

function fruitImgUrl(fruit){
    // 引数fruitについて、小文字でも大文字でも対応可
    fruit = fruit.toLowerCase();

    // エラーハンドリング
    if(!fruit) {
        throw new Error('Invalid input');
    }

 // ★fruit毎に条件分岐する →もっとスマートな方法は??★
   //=====================================
    if(fruit==='banana') { 
        return "url1";
    } else if(fruit==='pineapple') {
        return "url2";
    } else if(fruit==='pear') {
        return 'url3';
    } else {
        return 'no image';
    }
  //=====================================

}

解決案

連想配列を使用する!!!!!!

function fruitImgUrl(fruit){
    fruit = fruit.toLowerCase();
   
   // ★連想配列を使う
    const fruitUrl = {
        "banana": "url1",
        "pineapple": "url2",
        "pear": "url3"
    }
    const defaultUrl = "no image";

    return fruitUrl[fruit] == undefined ? defaultUrl: fruitUrl[fruit];
}

コメント

連想配列を使った方が、スッキリした形になるので積極的に使っていく。