0

I am new to coding so I'm having trouble with this.

I am trying to create a game where you get a random cuisine and from that cuisine you get a random restaurant for that particular cuisine.

However, when I run the code, I end up getting a restaurant for a different cuisine sometimes.

let whereToEat = prompt("Shall we go out to eat today");
let choice;
let cuisines = ["Italian", "Korean", "Thai", "Mediterranean", "Turkish"];
let italianRestaurant = ["Vapiano", "Bella Italia", "Grato"];
let koreanRestaurant = ["Superstar bbq", "Bari Bari", "Korean bbq and vegan"];
let thaiRestaurant = ["Thai pot", "Wok n Roll", "Farang"];
let mediterraneanRestaurant = ["Mediterrnean cafe and restaurant", "Seabird", "Nopi"];
let turkishRestaurant = ["Gokyuzu", "Antalya restaurant", "La'De kitchen"];


function whatToEat(choices) {
  let index = Math.floor(Math.random() * choices.length);
  return choices[index];
};

if (whereToEat === "yes") {
  alert("Great");
  alert("Lets try " + whatToEat(cuisines));
  if (whatToEat(cuisines) === "Italian") {
    alert("Let's go here: " + whatToEat(italianRestaurant));
  } else if (whatToEat(cuisines) === "Korean") {
    alert("Let's go here: " + whatToEat(koreanRestaurant));
  } else if (whatToEat(cuisines) === "Thai") {
    alert("Let's go here: " + whatToEat(thaiRestaurant));
  } else if (whatToEat(cuisines) === "Mediterranean") {
    alert("Let's go here: " + whatToEat(mediterraneanRestaurant));
  } else if (whatToEat(cuisines) === "Turkish") {
    alert("Let's go here: " + whatToEat(turkishRestaurant));
  }
} else {
  alert("Ahh I was hoping you would say yes");
}

1
  • 4
    When possible, try to move past prompt() and alert() for user interactivity :) Commented Apr 20, 2022 at 15:54

2 Answers 2

3

Store the result of whatToEat so your calling it once not in each if statement.

let whereToEat = prompt("Shall we go out to eat today");
let cuisines = ["Italian", "Korean", "Thai", "Mediterranean", "Turkish"];
let italianRestaurant = ["Vapiano", "Bella Italia", "Grato"];
let koreanRestaurant = ["Superstar bbq", "Bari Bari", "Korean bbq and vegan"];
let thaiRestaurant = ["Thai pot", "Wok n Roll", "Farang"];
let mediterraneanRestaurant = ["Mediterrnean cafe and restaurant", "Seabird", "Nopi"];
let turkishRestaurant = ["Gokyuzu", "Antalya restaurant", "La'De kitchen"];


function whatToEat(choices) {
  let index = Math.floor(Math.random() * choices.length);
  return choices[index];
};

if (whereToEat === "yes") {
  const choice = whatToEat(cuisines);
  alert("Great");
  alert("Lets try " + choice);
  if (choice === "Italian") {
    alert("Let's go here: " + whatToEat(italianRestaurant));
  } else if (choice === "Korean") {
    alert("Let's go here: " + whatToEat(koreanRestaurant));
  } else if (choice === "Thai") {
    alert("Let's go here: " + whatToEat(thaiRestaurant));
  } else if (choice === "Mediterranean") {
    alert("Let's go here: " + whatToEat(mediterraneanRestaurant));
  } else if (choice === "Turkish") {
    alert("Let's go here: " + whatToEat(turkishRestaurant));
  }
} else {
  alert("Ahh I was hoping you would say yes");
}

Sign up to request clarification or add additional context in comments.

Comments

1

It's because you're calling your random whatToEat function twice on the 'cuisines' array, which will give you two different results. Store the result in a binding so it doesn't change:

const choice = whatToEat(cuisines);
alert("Lets try " + choice);
if (choice === "Italian") { ... etc

2 Comments

Ah! Missed it by 30 seconds while I was typing ;)
I'd like to add: it would be much cooler to store these arrays in a map, that way you don't have to recode your entire program every time a different regional cuisine is added.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.