Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(arr) {
- let data = {};
- for (let i = 0; i < arr.length; i++) {
- let row = arr[i];
- row= row.split('|').filter(x=>x!='');
- let color = row[0];
- let secondArg =row[1];
- let thirdArg = row[2];
- if (!data.hasOwnProperty(color)) {
- data[color] = {age: null, name: null, opponents:[], rank:0, win:0, loss:0 };
- }
- if (secondArg=='age') {
- data[color][secondArg] = (thirdArg);
- } else if (secondArg=='name') {
- data[color][secondArg]=thirdArg;
- } else if(secondArg=='win') {
- data[color][secondArg] +=1;
- data[color].opponents.push(thirdArg);
- } else if (secondArg=='loss') {
- data[color][secondArg] +=1;
- data[color].opponents.push(thirdArg);
- }
- //ranks stays 0 until we collect all data
- }
- //take all keys from the object which have no null values for name and age
- let keys = Object.keys(data).filter(x=>data[x].name!=null && data[x].age!=null);
- //create new object and pass valid data to it
- let resultingData = {};
- keys.forEach(x=> resultingData[x] = data[x]);
- Object.keys(resultingData).forEach(x=>{
- resultingData[x].rank=((resultingData[x].win+1)/(resultingData[x].loss+1)).toFixed(2);
- //delete unnecessary properties
- delete resultingData[x].win;
- delete resultingData[x].loss;
- //sort the array of opponents alphabetically
- resultingData[x].opponents.sort((a,b)=> a.localeCompare(b));
- });
- console.log(JSON.stringify(resultingData));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement