See The Code

Builds a dynamic dropdown whenever a new City is added

function buildDropDown(){
let eventDD = document.getElementById("eventDropDown");
let allEvents = JSON.parse(localStorage.getItem("events")) || events;
let distinctEvents = [...new Set(allEvents.map(event => event.city))];

let linkHTMLEnd = 'All';
let resultsHTML = "";

for(let i = 0; i < distinctEvents.length; i++){ resultsHTML +=`${distinctEvents[i]}`;
  }

  resultsHTML += linkHTMLEnd;
  eventDD.innerHTML = resultsHTML;
  displayStats(events);
  }
        

Display The Stats of All the cities and events.

function displayStats(filteredEvents) {
let total = 0;
let average = 0;
let most = 0;
let least = -1;
let currentAttendance = 0;

for(let i = 0; i < filteredEvents.length; i++){ currentAttendance=parseInt(filteredEvents[i].attendance); total
  +=currentAttendance; if(most < currentAttendance){ most=currentAttendance; } if(least> currentAttendance || least <
    0){ least=currentAttendance; } } average=total / filteredEvents.length;
    document.getElementById("total").innerHTML=total.toLocaleString();
    document.getElementById("most").innerHTML=most.toLocaleString();
    document.getElementById("least").innerHTML=least.toLocaleString();
    document.getElementById("average").innerHTML=average.toLocaleString( undefined, { minimumFractionDigits: 0,
    maximumFractionDigits: 0, } ); }