任务是根据所选语言打印问候语消息。我得到了一个对象字面值。例如,如果用户选择“荷兰语”,程序将打印“Welkom”等。如果找不到该语言,程序应该打印默认语言,即英语。我已经能够解决大部分问题,除了一件事,现在在当前代码中找到语言时,它还会用英语打印欢迎信息,我错过了什么?
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');
答案 0 :(得分: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'));
答案 1 :(得分:1)
BTW您的代码在原始代码中打印所需语言和英语(或英语两次)的原因是,即使您找到了结果,该功能的执行仍会继续 - 浏览器不知道你对这个结果感到满意,因此你必须告诉它停在那里。即使是Nina的片段也是一个更优雅的问题解决方案,这里是我的代码,我添加了一个返回语句,该语句应该也可以使用:
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
}
}