JavaScriptのオブジェクトによる条件分岐
JavaScriptの条件分岐にはifまたはswitchがよく使用されます。
例えば、証券コード一覧があって、数字4桁を入力した際に企業名が表示させたい場合は…
4684: オービック 4704: トレンドマイクロ 4716: 日本オラクル 9613: NTTデータグループ
以下のようにifまたはswitchで条件分岐されることが多いです。
function getCompanyName(stockCode) {
if (stockCode === '4704') {
return 'トレンドマイクロ'
} else if (stockCode === '4716') {
return '日本オラクル'
} else if (stockCode === '4684') {
return 'オービック'
} else if (stockCode === '9613') {
return 'NTTデータグループ'
} else {
return 'Undefined stock code!'
}
}
const stockCode = prompt('Input stock code.')
console.log(getCompanyName(stockCode))
function getCompanyName(stockCode) {
switch (stockCode) {
case '4704':
return 'トレンドマイクロ'
case '4716':
return '日本オラクル'
case '4684':
return 'オービック'
case '9613':
return 'NTTデータグループ'
default:
return 'Undefined stock code!'
}
}
const stockCode = prompt('Input stock code.')
console.log(getCompanyName(stockCode))
しかし、オブジェクトを使用して以下のように書けばコード量を大幅に減らして見やすくできます。
function getCompanyName(stockCode) {
return {
'4704': 'トレンドマイクロ',
'4716': '日本オラクル',
'4684': 'オービック',
'9613': 'NTTデータグループ',
}[stockCode] ?? 'Undefined stock code!'
}
const stockCode = prompt('Input stock code.')
console.log(getCompanyName(stockCode))
Null合体演算子 (??) を使用していますが、このコードの例ではpromptを使用して文字列がstockCodeに入ることが決まっているため、問題なく処理できます。
もし同様のORやANDを使わない条件分岐に遭遇した場合、ifやswitchではなくオブジェクトで条件分岐して値を返すようにすると良いでしょう。