--- id: 56533eb9ac21ba0edf2244ca title: Using Objects for Lookups challengeType: 1 --- ## Description
Objects can be thought of as a key/value storage, like a dictionary. If you have tabular data, you can use an object to "lookup" values rather than a switch statement or an if/else chain. This is most useful when you know that your input data is limited to a certain range. Here is an example of a simple reverse alphabet lookup:
var alpha = {
  1:"Z",
  2:"Y",
  3:"X",
  4:"W",
  ...
  24:"C",
  25:"B",
  26:"A"
};
alpha[2]; // "Y"
alpha[24]; // "C"

var value = 2;
alpha[value]; // "Y"
## Instructions
Convert the switch statement into an object called lookup. Use it to look up val and assign the associated string to the result variable.
## Tests
```yml tests: - text: phoneticLookup("alpha") should equal "Adams" testString: assert(phoneticLookup("alpha") === 'Adams', 'phoneticLookup("alpha") should equal "Adams"'); - text: phoneticLookup("bravo") should equal "Boston" testString: assert(phoneticLookup("bravo") === 'Boston', 'phoneticLookup("bravo") should equal "Boston"'); - text: phoneticLookup("charlie") should equal "Chicago" testString: assert(phoneticLookup("charlie") === 'Chicago', 'phoneticLookup("charlie") should equal "Chicago"'); - text: phoneticLookup("delta") should equal "Denver" testString: assert(phoneticLookup("delta") === 'Denver', 'phoneticLookup("delta") should equal "Denver"'); - text: phoneticLookup("echo") should equal "Easy" testString: assert(phoneticLookup("echo") === 'Easy', 'phoneticLookup("echo") should equal "Easy"'); - text: phoneticLookup("foxtrot") should equal "Frank" testString: assert(phoneticLookup("foxtrot") === 'Frank', 'phoneticLookup("foxtrot") should equal "Frank"'); - text: phoneticLookup("") should equal undefined testString: assert(typeof phoneticLookup("") === 'undefined', 'phoneticLookup("") should equal undefined'); - text: You should not modify the return statement testString: assert(code.match(/return\sresult;/), 'You should not modify the return statement'); - text: You should not use case, switch, or if statements testString: assert(!/case|switch|if/g.test(code.replace(/([/]{2}.*)|([/][*][^/*]*[*][/])/g,'')), 'You should not use case, switch, or if statements'); ```
## Challenge Seed
```js // Setup function phoneticLookup(val) { var result = ""; // Only change code below this line switch(val) { case "alpha": result = "Adams"; break; case "bravo": result = "Boston"; break; case "charlie": result = "Chicago"; break; case "delta": result = "Denver"; break; case "echo": result = "Easy"; break; case "foxtrot": result = "Frank"; } // Only change code above this line return result; } // Change this value to test phoneticLookup("charlie"); ```
## Solution
```js function phoneticLookup(val) { var result = ""; var lookup = { alpha: "Adams", bravo: "Boston", charlie: "Chicago", delta: "Denver", echo: "Easy", foxtrot: "Frank" }; result = lookup[val]; return result; } ```