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 arr = JSON.parse(document.querySelector('#inputs textarea').value);
- let objWinner = findBestRestaurant(arr);
- document.getElementById('bestRestaurant').innerHTML = getMsgRest(objWinner);
- document.getElementById('workers').textContent = getMsgEmp(objWinner.workers);
- }
- function getMsgRest(objWinner) {
- return `Name: ${objWinner.name} Average Salary: ${objWinner['avg']} Best Salary: ${objWinner['maxSalary']}`
- }
- function getMsgEmp(workers) {
- let arr = [];
- for (let i = 0; i < workers.length; i += 2) {
- arr.push(`Name: ${workers[i]} With Salary: ${workers[i + 1]}`);
- }
- return arr.join(' ');
- }
- function findBestRestaurant(arr) {
- let result = arr.slice(0).reduce((acc, e) => {
- let [restaurant, ...workers] = e.split(' - ');
- if (acc[restaurant] === undefined) {
- acc[restaurant] = [];
- }
- workers[0].split(', ').forEach(w => {
- let [name, salary] = w.split(' ')
- salary = Number(salary);
- acc[restaurant].push(name)
- acc[restaurant].push(Number(salary))
- })
- return acc;
- }, {});
- let addAdditionalParams = [];
- Object.entries(result).reduce((acc, e) => {
- let totalSum = e[1].filter(e => !isNaN(e)).reduce((acc, e) => {
- acc = acc + e;
- return acc;
- }, 0);
- const topSal = e[1].filter(e => !isNaN(e)).sort((a, b) => b - a);
- let currMaxSalary = topSal[0].toFixed(2);
- const avg = (totalSum / (e[1].length / 2)).toFixed(2);
- acc = {name: e[0], avg: avg, maxSalary: currMaxSalary, workers: e[1]}
- addAdditionalParams.push(acc);
- return acc;
- }, {});
- let obj = {};
- let maxSalary = Number.MIN_SAFE_INTEGER;
- addAdditionalParams.forEach(e => {
- let avg = e.avg;
- if (avg > maxSalary) {
- maxSalary = avg;
- obj = e;
- }
- })
- return obj;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement