async function fetchScraperData() { let raw = await fetch('https://stats.ctvnews.ca/covidDapi/getCovidData/all') let data = await raw.json(); return data } (async () => { const scraperData = await fetchScraperData(); scraperData.forEach(province => { let D = province.data; console.log() province[1] = { total: D.totalCases ? D.totalCases : D.confirmedCases ? D.confirmedCases : 0, confirmed: D.totalCases ? D.totalCases : D.confirmedCases ? D.confirmedCases : 0, presumptive: '---' } province[2] = { active: D.activeCases ? D.activeCases : province[1].total && D.recoveries && D.deaths ? province[1].total-D.recoveries-D.deaths : province[1].total && D.recoveries ? province[1].total-D.recoveries : 0, recovered: D.recoveries ? D.recoveries : 0, deaths: D.deaths ? D.deaths : 0 } province[3] = { administered: D.totalTests ? D.totalTests : D.negativeTests && D.pendingTests && (D.totalCases || D.confirmedCases) ? D.negativeTests + D.pendingTests + (D.totalCases ? D.totalCases : D.confirmedCases) : '---', negative: D.negativeTests ? D.negativeTests : '---', pending: D.pendingTests ? D.pendingTests : '---' } }) scraperData.forEach(province => { province[1].array = [province[1].total, province[1].confirmed, province[1].presumptive] province[2].array = [province[2].active, province[2].recovered, province[2].deaths] province[3].array = [province[3].administered, province[3].negative, province[3].pending] }) provArray.forEach(province => { setTable(province.long, 1, scraperData) setTable(province.long, 2, scraperData) setTable(province.long, 3, scraperData) }) console.log('Auto all') })() const provArray = [{short:'BC', long:'British Columbia'},{short:'AB', long:'Alberta'},{short:'SK', long:'Saskatchewan'},{short:'MB', long:'Manitoba'},{short:'ON', long:'Ontario'},{short:'QC', long:'Quebec'},{short:'NB', long:'New Brunswick'},{short:'NS', long:'Nova Scotia'},{short:'PE', long:'Prince Edward Island'},{short:'NL', long:'Newfoundland and Labrador'},{short:'YT', long:'Yukon'},{short:'NT', long:'Northwest Territories'},{short:'NU', long:'Nunavut'}] function setTable(province, tableNum, scraperData) { let short = provArray.find(prov => prov.long === province).short; let obj = scraperData.find(D => D.province === short) let dataArray = obj[tableNum].array let head = document.getElementById(getID(province)); let div = head.parentElement; let testTable = div.querySelector(`.tb${tableNum}`) let entries = testTable.querySelectorAll('td') let autoArray = ["auto", "autp", "atuo", "auot", "atou", ""] entries.forEach((entry, i) => { let current = entry.innerText; entry.innerText = autoArray.includes(current.trim().toLowerCase()) ? `${dataArray[i].toLocaleString()}` : current; }) } function getID (long) { let lower = long.toLowerCase(); let split = lower.split(' '); let hyphen = split.join('-'); return hyphen; }