Skip to content

Instantly share code, notes, and snippets.

@7daysofrain
Created May 27, 2024 18:51
Show Gist options
  • Save 7daysofrain/5b22e14677a70cf12f69ca34f8eaca34 to your computer and use it in GitHub Desktop.
Save 7daysofrain/5b22e14677a70cf12f69ca34f8eaca34 to your computer and use it in GitHub Desktop.
Animals
const data = {
animals: [
{
id: '0938aa23-f153-4937-9f88-4858b24d6bce',
name: 'lions',
popularity: 4,
location: 'NE',
residents: [
{
name: 'Zena',
sex: 'female',
age: 12
},
{
name: 'Maxwell',
sex: 'male',
age: 15
},
{
name: 'Faustino',
sex: 'male',
age: 7
},
{
name: 'Dee',
sex: 'female',
age: 14
}
]
},
{
id: 'e8481c1d-42ea-4610-8e11-1752cfc05a46',
name: 'tigers',
popularity: 5,
location: 'NW',
residents: [
{
name: 'Shu',
sex: 'female',
age: 19
},
{
name: 'Esther',
sex: 'female',
age: 17
}
]
},
{
id: 'baa6e93a-f295-44e7-8f70-2bcdc6f6948d',
name: 'bears',
popularity: 5,
location: 'NW',
residents: [
{
name: 'Hiram',
sex: 'male',
age: 4
},
{
name: 'Edwardo',
sex: 'male',
age: 4
},
{
name: 'Milan',
sex: 'male',
age: 4
},
]
},
{
id: 'ef3778eb-2844-4c7c-b66c-f432073e1c6b',
name: 'penguins',
popularity: 4,
location: 'SE',
residents: [
{
name: 'Joe',
sex: 'male',
age: 10
},
{
name: 'Tad',
sex: 'male',
age: 12
},
{
name: 'Keri',
sex: 'female',
age: 2
},
{
name: 'Nicholas',
sex: 'male',
age: 2
},
]
},
{
id: '533bebf3-6bbe-41d8-9cdf-46f7d13b62ae',
name: 'otters',
popularity: 4,
location: 'SE',
residents: [
{
name: 'Neville',
sex: 'male',
age: 9
},
{
name: 'Lloyd',
sex: 'male',
age: 8
},
{
name: 'Mercedes',
sex: 'female',
age: 9
},
{
name: 'Margherita',
sex: 'female',
age: 10
},
]
},
{
id: '89be95b3-47e4-4c5b-b687-1fabf2afa274',
name: 'frogs',
popularity: 2,
location: 'SW',
residents: [
{
name: 'Cathey',
sex: 'female',
age: 3
},
{
name: 'Annice',
sex: 'female',
age: 2
}
]
},
{
id: '78460a91-f4da-4dea-a469-86fd2b8ccc84',
name: 'snakes',
popularity: 3,
location: 'SW',
residents: [
{
name: 'Paulette',
sex: 'female',
age: 5
},
{
name: 'Bill',
sex: 'male',
age: 6
}
]
},
{
id: 'bb2a76d8-5fe3-4d03-84b7-dba9cfc048b5',
name: 'elephants',
popularity: 5,
location: 'NW',
residents: [
{
name: 'Ilana',
sex: 'female',
age: 11
},
{
name: 'Orval',
sex: 'male',
age: 15
},
{
name: 'Bea',
sex: 'female',
age: 12
},
{
name: 'Jefferson',
sex: 'male',
age: 4
},
]
},
{
id: '01422318-ca2d-46b8-b66c-3e9e188244ed',
name: 'giraffes',
popularity: 4,
location: 'NE',
residents: [
{
name: 'Gracia',
sex: 'female',
age: 11
},
{
name: 'Antone',
sex: 'male',
age: 9
},
{
name: 'Vicky',
sex: 'female',
age: 12
},
{
name: 'Clay',
sex: 'male',
age: 4
},
{
name: 'Arron',
sex: 'male',
age: 7
},
{
name: 'Bernard',
sex: 'male',
age: 6
}
]
}
],
employees: [
{
id: 'c5b83cb3-a451-49e2-ac45-ff3f54fbe7e1',
firstName: 'Nigel',
lastName: 'Nelson',
managers: ['0e7b460e-acf4-4e17-bcb3-ee472265db83',
'fdb2543b-5662-46a7-badc-93d960fdc0a8'],
responsibleFor: ['0938aa23-f153-4937-9f88-4858b24d6bce',
'e8481c1d-42ea-4610-8e11-1752cfc05a46']
},
{
id: '0e7b460e-acf4-4e17-bcb3-ee472265db83',
firstName: 'Burl',
lastName: 'Bethea',
managers: ['9e7d4524-363c-416a-8759-8aa7e50c0992'],
responsibleFor: ['0938aa23-f153-4937-9f88-4858b24d6bce',
'e8481c1d-42ea-4610-8e11-1752cfc05a46',
'baa6e93a-f295-44e7-8f70-2bcdc6f6948d',
'ef3778eb-2844-4c7c-b66c-f432073e1c6b']
},
{
id: 'fdb2543b-5662-46a7-badc-93d960fdc0a8',
firstName: 'Ola',
lastName: 'Orloff',
managers: ['9e7d4524-363c-416a-8759-8aa7e50c0992'],
responsibleFor: ['533bebf3-6bbe-41d8-9cdf-46f7d13b62ae',
'89be95b3-47e4-4c5b-b687-1fabf2afa274',
'78460a91-f4da-4dea-a469-86fd2b8ccc84',
'bb2a76d8-5fe3-4d03-84b7-dba9cfc048b5']
},
{
id: '56d43ba3-a5a7-40f6-8dd7-cbb05082383f',
firstName: 'Wilburn',
lastName: 'Wishart',
managers: ['0e7b460e-acf4-4e17-bcb3-ee472265db83',
'fdb2543b-5662-46a7-badc-93d960fdc0a8'],
responsibleFor: ['78460a91-f4da-4dea-a469-86fd2b8ccc84',
'bb2a76d8-5fe3-4d03-84b7-dba9cfc048b5']
},
{
id: '9e7d4524-363c-416a-8759-8aa7e50c0992',
firstName: 'Stephanie',
lastName: 'Strauss',
managers: [],
responsibleFor: ['01422318-ca2d-46b8-b66c-3e9e188244ed']
},
{
id: '4b40a139-d4dc-4f09-822d-ec25e819a5ad',
firstName: 'Sharonda',
lastName: 'Spry',
managers: ['0e7b460e-acf4-4e17-bcb3-ee472265db83',
'fdb2543b-5662-46a7-badc-93d960fdc0a8'],
responsibleFor: ['533bebf3-6bbe-41d8-9cdf-46f7d13b62ae',
'89be95b3-47e4-4c5b-b687-1fabf2afa274']
},
{
id: 'c1f50212-35a6-4ecd-8223-f835538526c2',
firstName: 'Ardith',
lastName: 'Azevado',
managers: ['b0dc644a-5335-489b-8a2c-4e086c7819a2'],
responsibleFor: ['e8481c1d-42ea-4610-8e11-1752cfc05a46',
'baa6e93a-f295-44e7-8f70-2bcdc6f6948d']
},
{
id: 'b0dc644a-5335-489b-8a2c-4e086c7819a2',
firstName: 'Emery',
lastName: 'Elser',
managers: ['9e7d4524-363c-416a-8759-8aa7e50c0992'],
responsibleFor: ['bb2a76d8-5fe3-4d03-84b7-dba9cfc048b5',
'baa6e93a-f295-44e7-8f70-2bcdc6f6948d',
'0938aa23-f153-4937-9f88-4858b24d6bce']
}
],
hours: { 'Tuesday': { open: 8, close: 18 },
'Wednesday': { open: 8, close: 18 },
'Thursday': { open: 10, close: 20 },
'Friday': { open: 10, close: 20 },
'Saturday': { open: 8, close: 22 },
'Sunday': { open: 8, close: 20 },
'Monday': { open: 0, close: 0 } },
prices: { 'Adult': 49.99,
'Senior': 24.99,
'Child': 20.99 }
};
function calculatePopulation() {
let count = 0;
for(var i = 0 ; i < data.animals.length ; i++) {
count += data.animals[i].residents.length
}
return count;
}
function printTimetable() {
let timetable = [];
for(let hour in data.hours) {
console.log(hour);
if(data.hours[hour].open != 0 && data.hours[hour].close != 0) {
timetable.push(`${hour}: from ${data.hours[hour].open} to ${data.hours[hour].close}`);
} else {
timetable.push(`${hour}: Closed`);
}
}
const d = timetable.pop();
timetable.unshift(d);
return timetable.join("\n");
}
function findEmployee(id) {
const result = data.employees.find(employee => employee.id === id);
if(result) {
return result.firstName + " " + result.lastName;
} else {
return "Not found";
}
}
function findAnimal(id) {
const result = data.animals.find(animal => animal.id === id);
if(result) {
return result.name;
} else {
return "Not found";
}
}
function findManagersOf(idEmployee) {
const employee = data.employees.find(x => x.id === idEmployee);
const managers = employee.managers.map(m => findEmployee(m));
return managers.join("\n");
}
function countOf(animal, sex) {
const foundAnimal = data.animals.find(x => x.name === animal);
if(!foundAnimal) {
return 0;
}
if(!sex) {
return foundAnimal.residents.length;
} else {
const filtered = foundAnimal.residents.filter(x => x.sex === sex);
return filtered.length;
}
}
function countBySex(sex) {
let count = 0;
const foundAnimal = data.animals.forEach(animal => {
const filtered = animal.residents.filter(s => s.sex === sex);
count += filtered.length;
});
return count;
}
function responsibleFor(employeeId) {
const employee = data.employees.find(e => e.id === employeeId);
const responsibilities = employee.responsibleFor.map( a => findAnimal(a) );
return `${employee.firstName} ${employee.lastName}: ${responsibilities.join(',')}`;
}
function listResponsibilities() {
const employees = data.employees.map(emp => responsibleFor(emp.id));
return employees.join("\n");
}
function calculatePrice(adults, children = 0, seniors = 0) {
let calc = 0;
calc += data.prices.Adult * adults;
calc += data.prices.Child * children;
calc += data.prices.Senior * seniors;
return calc;
}
function printAnimalLocation() {
const locations = {
"NW": [],
"NE": [],
"SW": [],
"SE": [],
}
data.animals.forEach(animal => {
locations[animal.location].push(animal.name);
})
console.log(locations);
var textos = [];
for(var location in locations) {
textos.push(`${location}: ${locations[location].join(',')}`)
}
return textos.join("\n");
}
printAnimalLocation();
//calculatePrice(2);
// listResponsibilities()
//responsibleFor('c5b83cb3-a451-49e2-ac45-ff3f54fbe7e1');
//countBySex('male');
// countOf('giraffes', 'female')
//findManagersOf("c5b83cb3-a451-49e2-ac45-ff3f54fbe7e1");
//findEmployee('b0dc644a-5335-489b-8a2c-4e086c7819a2');
// printTimetable()
// calculatePopulation();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment