I'm not saying this is a completely smart idea (ideally calculations for large amounts of data should be done in the back end, I think) but humor me.
I am attempting to pull a view pieces of data from a JSON source and do a small bit of analysis. Given the following data source:
[
{
"group": "satellite-1",
"data": [
{
"label": "feed-1a",
"data": [
{"timeRange": [800, 820], "val": "TargetC"},
{"timeRange": [800, 820], "val": "TargetD"},
{"timeRange": [820, 840], "val": "TargetA"},
{"timeRange": [820, 840], "val": "TargetC"},
{"timeRange": [820, 840], "val": "TargetD"},
{"timeRange": [820, 840], "val": "TargetB"}
]
},
{
"label": "feed-2a",
"data": [
{"timeRange": [780, 800], "val": "TargetB"}
]
}
]
},
{
"group": "satellite-4",
"data": [
{
"label": "feed-1b",
"data": [
{"timeRange": [780, 800], "val": "TargetA"},
{"timeRange": [800, 820], "val": "TargetB"},
{"timeRange": [800, 820], "val": "TargetC"}
]
},
{
"label": "feed-2b",
"data": [
{"timeRange": [780, 800], "val": "TargetB"}
]
}
]
}
]
I want to determine:
- number of satellites
- number of satellite feeds
- most observant feed (i.e. which feed had the most targets)
However, I'm not getting the result I want. I think my loops are not working as expected (see comments):
var dataSet_initial = [
{
"group": "satellite-1",
"data": [
{
"label": "feed-1a",
"data": [
{"timeRange": [800, 820], "val": "TargetC"},
{"timeRange": [800, 820], "val": "TargetD"},
{"timeRange": [820, 840], "val": "TargetA"},
{"timeRange": [820, 840], "val": "TargetC"},
{"timeRange": [820, 840], "val": "TargetD"},
{"timeRange": [820, 840], "val": "TargetB"}
]
},
{
"label": "feed-2a",
"data": [
{"timeRange": [780, 800], "val": "TargetB"}
]
}
]
},
{
"group": "satellite-4",
"data": [
{
"label": "feed-1b",
"data": [
{"timeRange": [780, 800], "val": "TargetA"},
{"timeRange": [800, 820], "val": "TargetB"},
{"timeRange": [800, 820], "val": "TargetC"}
]
},
{
"label": "feed-2b",
"data": [
{"timeRange": [780, 800], "val": "TargetB"}
]
}
]
}
];
/*
* Prep Data
*/
var dataSet_stringify = JSON.stringify(dataSet_initial); // strigify JSON to parse it
var dataSet_parsed = JSON.parse(dataSet_stringify); // parse JSON
/*
* # Satellites
*/
var getNumberofSatellites = dataSet_parsed.length; //2
console.log("Number of Satellites: " + getNumberofSatellites);
/*
* # Feeds
*/
var getGroupList = function(){
var i, j;
for (i = 0; i < dataSet_parsed.length; i++) {
for (j = 0; i < dataSet_parsed[i].data.length; j++){
return dataSet_parsed[i].data[j].label;
}
}
}; //returns only the first feed, not looping through
console.log("Feeds: " + getGroupList());
/*
* # of Feed Data Feeds
*/
var getMostObservantFeed = function(){
var i, j;
for (i = 0; i < dataSet_parsed.length; i++) {
for (j = 0; i < dataSet_parsed[i].data[j].data.length; j++){
return dataSet_parsed[i].data[j].data.length;
}
}
}; //again not looping through
console.log("Individual Feed Data Feeds: " + getMostObservantFeed());