This code snippet works well, but I want to know the logic behind if statement in updateList function? I know why I get all countries when the select value is to all, but when I chose other value in a select list like Oceania, I get just countries from that region. How that simple logical or operator can filter the rest of the countries and return just a specific region? I'd appreciate if someone can explain me step by step how that whole updateList function works?
const regionMenu = document.querySelector('#regionMenu');
const result = document.querySelector('.result');
const countryUrl = 'https://restcountries.eu/rest/v2/all';
let countries;
fetch(countryUrl)
.then(response => response.json())
.then(json => {
countries = json;
// console.log(countries);
updateList();
})
.catch(err => console.log(err));
function updateList() {
let output = '';
for(let i = 0; i < countries.length; i++) {
if(regionMenu.value === 'all' || regionMenu.value === countries[i].region) {
output += `
<div>
<img src=${countries[i].flag} width="160px" height="80px">
<ul>
<li> Name: ${countries[i].name}</li>
<li> Population: ${countries[i].population}</li>
<li> Region: ${countries[i].region}</li>
<li> Capital: ${countries[i].capital}</li>
</ul>
</div>
`;
}
}
result.innerHTML = output;
}
regionMenu.addEventListener('change', updateList);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<header>
<h3>Where in the world?</h3>
<i class="fas fa-moon">Dark Mode</i>
</header>
<nav>
<!-- Search input -->
<div class="search">
<i class="fas fa-search"></i>
<input type="text" placeholder="Search for a country" id="searchInput">
</div>
</nav>
<main>
<!-- Filter Countries -->
<select name="Filter by Region" id="regionMenu">
<option value="all">Filter by Region</option>
<option value="Africa">Africa</option>
<option value="Americas">Americas</option>
<option value="Asia">Asia</option>
<option value="Europe">Europe</option>
<option value="Oceania">Oceania</option>
</select>
<div class="result">
</div>
</main>
<script src="main.js"></script>
</body>
</html>