在JS中以不同语言打印“welcome”

时间:2016-07-20 10:45:40

标签: javascript

任务是根据所选语言打印问候语消息。我得到了一个对象字面值。例如,如果用户选择“荷兰语”,程序将打印“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');

2 个答案:

答案 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
  }
}