Home > Back-end >  Can I compare the answer of a prompt to properties of objects in an array?
Can I compare the answer of a prompt to properties of objects in an array?

Time:03-06

I am trying to match the result of a prompt with properties of various objects in an array. (I.e if city entered matches the name of one of the objects listed, return the coinciding temp)

let cities = [
  {
    name: "San Luis Obispo",
    temp: 16,
    uv: 1,
    humidity: 5,
    elevation: 28,
    wind: 2,
  },
  {
    name: "Morro Bay",
    temp: 11,
    uv: 2,
    humidity: 8,
    elevation: 1,
    wind: 8,
  }]

let city = prompt("Enter a city");
if (city === cities.name){
  alert(`It is currently ${temp}°C in ${city}`);
} 

CodePudding user response:

let cities = [
  {
    name: "San Luis Obispo",
    temp: 16,
    uv: 1,
    humidity: 5,
    elevation: 28,
    wind: 2,
  },
  {
    name: "Morro Bay",
    temp: 11,
    uv: 2,
    humidity: 8,
    elevation: 1,
    wind: 8,
  }]

let cityName = prompt("Enter a city");
const city = cities.find(cityX => {
    return cityName === cityX.name
})
if (city){
  alert(`It is currently ${city.temp}°C in ${cityName}`);
} 

CodePudding user response:

run a for loop over the array of objects ( cities ), checking each city in the array:

let cities = [{
    name: "San Luis Obispo",
    temp: 16,
    uv: 1,
    humidity: 5,
    elevation: 28,
    wind: 2,
},
{
    name: "Morro Bay",
    temp: 11,
    uv: 2,
    humidity: 8,
    elevation: 1,
    wind: 8,
}
]

let city = prompt("Enter a city");
for (let i = 0; i < cities.length; i  ) {
    if (city == cities[i].name) {
        alert(`It is currently ${cities[i].temp}°C in ${city}`);
    }
}

CodePudding user response:

The following code should work. Explaination in comments.

const cityName = prompt("Enter a city").trim() // save city given in prompt in variable "cityName" (remove trailing whitespace via trim)
for(const city of cities) { // execute following code for all cities; the current city will be saved in variable "city"
  if(city.name === cityName) { // check if name of currently checked city matches cityName
    // if the city name matched, the variable "city" contains the correct city
    alert(`It is currently ${city.temp}°C in ${cityName}`) // give correct alert relative to matched city
    break // skip the rest of the cities
  }
}

CodePudding user response:

Try this

let city = prompt("Enter a city");
Cities.forEach(current=>{
if (city.trim() === current.name){
  alert(`It is currently ${current.temp}°C in ${city}`);
} 
})
  • Related