CCCPaste

Concert

function concert(input) {
    let bands = [];

    let lastBand = input.pop();
    let command = input.shift();

    while (command != "start of concert") {
        if (command.includes("Add")) {
            let [comm, bandName, bandMembers] = command.split("; ");
            let bandMembersArr = bandMembers.split(", ");
            let newBand = { name: bandName, members: bandMembersArr }
            let bandExists = false;

            bands.forEach(band => {
                if (band["name"] == bandName) {
                    bandExists = true;
                    bandMembersArr.forEach(element => {
                        if (band.hasOwnProperty("members")) {
                            if (!band["members"].includes(element)) {
                                band["members"].push(element);
                            }
                        } else {
                            band["members"] = bandMembersArr;
                        }
                    });
                }
            });
            if (bandExists == false) {
                bands.push(newBand);
            }
        } else if (command.includes("Play")) {
            let [com, bandName, playtime] = command.split("; ");
            playtime = Number(playtime);
            let newBand = { name: bandName, time: playtime };
            let bandExists = false;
            bands.forEach(band => {
                if (band["name"] == bandName) {
                    bandExists = true;
                    if (!band.hasOwnProperty("time")) {
                        band["time"] = playtime;
                    } else {
                        band["time"] += playtime;
                    }
                }
            });
            if (bandExists == false) {
                bands.push(newBand);
            }
        }
        command = input.shift();
    }
    let sorted = bands.sort((a, b) => {if (a["time"] !== b["time"]) {
        return b["time"] - a["time"]
        } else {
        return a["name"].localeCompare(b["name"]);
        }});

    let totalTime = 0;
    bands.forEach(band => {
        totalTime += band["time"];
    });
    console.log(`Total time: ${totalTime}`);

    sorted.forEach(element => {
        console.log(`${element["name"]} -> ${element["time"]}`);
    });
    console.log(lastBand);
    sorted.forEach(element => {
        if (element["name"] == lastBand) {
            let membersArr = element["members"];
            membersArr.forEach(member => {
                console.log(`=> ${member}`);
            });
        }
    });
}