【リファクタリングメモ】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]; }
コメント
連想配列を使った方が、スッキリした形になるので積極的に使っていく。