Skip to content

Instantly share code, notes, and snippets.

@elyasha
Created May 21, 2022 12:45
Show Gist options
  • Save elyasha/0142a93aa59d3959d0c56a3707658bbb to your computer and use it in GitHub Desktop.
Save elyasha/0142a93aa59d3959d0c56a3707658bbb to your computer and use it in GitHub Desktop.
LEARN TYPESCRIPT Restaurant Recommender
import restaurants from './restaurants';
const dollarSigns = '$$';
const deliveryTimeMax = 90;
const maxDistance = 10;
let result: string;
let hour = new Date().getHours()
const priceBracket: number = dollarSigns.length;
const filteredRestaurants = restaurants.filter((restaurant) => {
if (Number(restaurant.priceBracket) > priceBracket) {
return false;
}
if (restaurant.deliveryTimeMinutes > deliveryTimeMax) {
return false;
}
if (Number(restaurant.distance) > maxDistance) {
return false;
}
if (hour < Number(restaurant.openHour) || hour > Number(restaurant.closeHour)) {
return false;
}
return restaurant;
});
if (filteredRestaurants.length === 0) {
result = 'There are no restaurants available right now.';
} else {
result = `We found ${filteredRestaurants.length} restaurants, the first is ${filteredRestaurants[0].name}.`;
}
console.log(result);
export default [
{
name: 'Silver Rice Sushi 🍣',
priceBracket: '2',
deliveryTimeMinutes: 40,
openHour: '12',
closeHour: '23',
distance: '5',
},
{
name: 'Nikko\'s Rotisserie Chicken 🍗',
priceBracket: '1',
deliveryTimeMinutes: 20,
openHour: '12',
closeHour: '21',
distance: '8',
},
{
name: 'Aita Trattoria 🍝',
priceBracket: '3',
deliveryTimeMinutes: 60,
openHour: '18',
closeHour: '22',
distance: '1',
},
{
name: 'Lula Bagel 🥯',
priceBracket: '1',
deliveryTimeMinutes: 20,
openHour: '0',
closeHour: '12',
distance: '2',
},
{
name: 'Golden Chopstick 🥢',
priceBracket: '1',
deliveryTimeMinutes: 20,
openHour: '15',
closeHour: '23',
distance: '12',
},
];
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"strictNullChecks": true
},
"include": ["**/*.ts"]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment