2016-07-20 7 views
0

選択した言語に応じてhelloメッセージを出力します。私はオブジェクトリテラルを与えられています。例えば、ユーザーが「dutch」を選択すると、プログラムは「Welkom」などを印刷します。言語が見つからない場合、プログラムはデフォルト言語(英語)を出力する必要があります。私は、言語が見つかったときに現在のコードで、それが英語でウェルカムメッセージを表示していることを除いて、ほとんどの問題を解決することができました。何が欠けていますか?JSで異なる言語で "welcome"を印刷

var o = { 
    english: 'Welcome', 
    czech: 'Vitejte', 
    danish: 'Velkomst', 
    dutch: 'Welkom', 
    estonian: 'Tere tulemast', 
    finnish: 'Tervetuloa', 
    flemish: 'Welgekomen', 
    french: 'Bienvenue', 
    german: 'Willkommen', 
    irish: 'Failte', 
    italian: 'Benvenuto', 
    latvian: 'Gaidits', 
    lithuanian: 'Laukiamas', 
    polish: 'Witamy', 
    spanish: 'Bienvenido', 
    swedish: 'Valkommen', 
    welsh: 'Croeso' 
} 

function GetLang(arg) { 

    for (key in o) { 
    if (arg === key) { 
     console.log(o[key]) 
    } 
    } 
    if (arg !== key) { 
    console.log(o.english) 
    } 

} 
GetLang('danish'); 

答えて

3

あなたが直接パラメータargを使用して、配列内のこのプロパティ場合はチェックとして、それを使用することができます。値を取得すると、englishプロパティの値が取得されます。

return o[arg] || o.english; 

var o = { 
 
     english: 'Welcome', 
 
     czech: 'Vitejte', 
 
     danish: 'Velkomst', 
 
     dutch: 'Welkom', 
 
     estonian: 'Tere tulemast', 
 
     finnish: 'Tervetuloa', 
 
     flemish: 'Welgekomen', 
 
     french: 'Bienvenue', 
 
     german: 'Willkommen', 
 
     irish: 'Failte', 
 
     italian: 'Benvenuto', 
 
     latvian: 'Gaidits', 
 
     lithuanian: 'Laukiamas', 
 
     polish: 'Witamy', 
 
     spanish: 'Bienvenido', 
 
     swedish: 'Valkommen', 
 
     welsh: 'Croeso' 
 
    }; 
 

 
function GetLang(arg) { 
 
    return o[arg] || o.english; 
 
} 
 

 
console.log(GetLang('danish'));

+3

それはない方が良いでしょう関数からconsole.logを呼び出し、メッセージを返します。 – dfsq

+0

それはとてもシンプルで、コードはほとんど必要ありません。大いに感謝する!何らかの理由で、私はそのような単純な解決策を考えなかった。 – Alex

+0

キーを知っていればオブジェクトを反復する必要はない。あなたはそれに直接対処することができます。 –

1

ところで、あなたのコードは、あなたの元のコードに必要な言語(2回または英語)英語の両方を印刷した理由は、関数の実行も続いていることですあなたの結果を見つけた後で、ブラウザはあなたがその結果に満足しているという手がかりがないので、そこで停止するように指示しなければなりません。ニーナのさえスニペットが問題にはるかにエレガントなソリューションである、ここで私は同様に動作するはずreturn文を、追加しましたあなたのコードは次のとおりです。

function GetLang(arg) { 
 

 
    for (key in o) { 
 
    if (arg === key) { 
 
     console.log(o[key]) 
 
     return // we have found the result, do not continue execution of the function 
 
    } 
 
    } 
 
    
 
    if (arg !== key) { 
 
    console.log(o.english) // the function ends here, there is no need for an explicit return statement here 
 
    } 
 
}

+0

ああ、今私は理解する!あなたの説明は私が間違っていた箇所を示しています、ありがとうございます) – Alex

+1

'GetLang'の外にログ機能を置くと、関数がより再利用可能になります。ページの見出しにウェルカムメッセージを置く必要があるとします。元のコードを使用することはできません。なぜなら、テキストはコンソールに配置され、ほとんどのユーザーはあなたのウェブサイトでこれを気付かないからです。ほとんど同じであるがGetLangAsHeadingという別の関数を書く必要がありますが、見出しにテキストを置きます。 –

関連する問題