I can't figure out why specialArray
is not keeping its values outside of $.getJSON
. I thought I understood scope, any help appreciated. It spits out values to the console, but loses the values once it gets outside .getJSON
. Any ideas?
var specialArray = [];
var data, temp, regionArrayNumber;
var numberOfRegions = 29;
var chartData = [];
$(document).ready(function() {
// set up array of objects, organized by region_id
for (var j = 0; j < numberOfRegions; j++) {
temp = {
"region_id" : (j + 1),
"number_of_reads" : 0,
"bus_count" : 0,
"reads_per_bus" : 0
};
chartData.push(temp);
}
$.getJSON('https://data.cityofchicago.org/resource/historical-traffic-congestion-region.json', function(data) {
// cycle through objects, add numbers to totals
for (var i = 0; i < data.length; i++) {
regionArrayNumber = data[i].region_id - 1; // get region id, offset because of zero-based array
chartData[regionArrayNumber].bus_count += parseInt(data[i].bus_count);
chartData[regionArrayNumber].number_of_reads += parseInt(data[i].number_of_reads);
}
// calculate avg reads per bus
for (var k = 0; k < chartData.length; k++) {
chartData[k].reads_per_bus = (parseInt(data[k].number_of_reads)) / (parseInt(data[k].bus_count));
}
// set up array for google chart
for (var x = 0; x < chartData.length; x++) {
var tempArray = [];
tempArray[0] = chartData[x].region_id;
tempArray[1] = parseInt(chartData[x].number_of_reads);
specialArray.push(tempArray);
console.log("Inside: " + specialArray[x][0] + ", " + specialArray[x][1]);
}
});
console.log("Outside: " + specialArray[1][0]);
}); // end of doc.ready