Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve() {
- document.querySelector("#btnSend").addEventListener("click", onClick);
- function onClick() {
- let restRegistry = [];
- let inputArr = JSON.parse(
- document.querySelector("#inputs textarea").value
- );
- for (let entry of inputArr) {
- let [rName, wData] = entry.split(" - ");
- if (findByName(rName)) {
- let restaurantObj = findByName(rName);
- // console.log(restaurantObj);
- for (let w of wData.split(", ")) {
- let [wName, wSalary] = w.split(" ");
- restaurantObj.workers[wName] = Number(wSalary);
- }
- } else {
- restFactory(rName, wData);
- }
- }
- let bestR = restRegistry.sort((a, b) => b.average - a.average)[0];
- let elRest = document.querySelector("#bestRestaurant p");
- elRest.textContent = `Name: ${
- bestR.name
- } Average Salary: ${bestR.average.toFixed(
- 2
- )} Best Salary: ${bestR.bestSalaray.toFixed(2)}`;
- let bestWorkers = Object.keys(bestR.workers).sort(
- (a, b) => bestR.workers[b] - bestR.workers[a]
- );
- let elWorkers = document.querySelector("#workers p");
- let resultText = "";
- for (let key of bestWorkers) {
- resultText += `Name: ${key} With Salary: ${bestR.workers[key]} `;
- }
- elWorkers.textContent = resultText;
- function findByName(name) {
- let searchedR = restRegistry.filter((r) => r.name == name);
- if (searchedR) {
- return searchedR[0];
- }
- }
- function restFactory(name, workersData) {
- const newRobj = {
- name: name,
- workers: {},
- get average() {
- let salaries = Object.values(this.workers);
- return salaries.reduce((a, b) => a + b) / salaries.length;
- },
- get bestSalaray() {
- let sorted = Object.keys(this.workers).sort(
- (a, b) => this.workers[b] - this.workers[a]
- );
- return this.workers[sorted[0]];
- },
- };
- const workersD = workersData.split(", ");
- for (let worker of workersD) {
- let [wName, wSalary] = worker.split(" ");
- newRobj.workers[wName] = Number(wSalary);
- }
- restRegistry.push(newRobj);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement