0

Let's say I have a function that accept language as parameter and returns one of the languages defined on an object, based on this parameter:

function greet(language) {
  var greeting = {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'}
  return greeting.language
}

When I do this I get undefined, which means that there is no value assigned to language so how do I make language equal one of the keys?

snnsnn
  • 10,486
  • 4
  • 39
  • 44
Miles
  • 3
  • 1

2 Answers2

3

Using greeting.language is equivalent to greeting['language'], but 'language' isn't a property of greeting.

Instead, you want to treat language as a variable, so use greeting[language]. So if the input is 'polish', your function will return greeting['polish'].

Bucket
  • 7,415
  • 9
  • 35
  • 45
0

Since you have a Dynamic Object you should do this, because it is an unknown property of the object, for Dynamic Propertys you can use brackets =>

function greet(language) {
var greeting = {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'}
return greeting[language]
}
console.log(greet("danish"))
Carlos1232
  • 815
  • 6
  • 15