Remove Duplicate On Json Iteration
Need to iterate over the below JSON object to produce a report (Tabular Report in table structure). Report will basically consist of List of stories & its related tasks state.
Solution 1:
You don't want to remove the duplicate entries, you want to merge them per-storyname.
var stories = {};
for (var i=0; i<QueryResults.Results.length; i++) {
var result = QueryResults.Results[i],
name = result.StoryName
if (!(name in stories))
stories[name] = {};
stories[name][result.Name] = result.State;
}
/* console.log(stories):
{
"FB Integration":{"Tech Design":"Completed","Development":"In-Progress","QA Testing":"Not Started","Front End Development":"Completed"},
"Twitter Integration":{"Tech Design":"Not Started","Development":"Not Started"}
} */
Now you can build a table from that.
var keys = [];
for (var i=0; i<QueryResults.Results.length; i++) {
var n = QueryResults.Results[i].Name;
if (keys.indexOf(n) == -1)
keys.push(n);
}
vardata = "<table><tr><th>Story Name</th>";
for (var i=0; i<keys.length; i++)
data += "<th>"+keys[i]+"</th>";
data += "</tr>";
for (var storyname in stories) {
data += "<tr><th>"+storyname+"</th>";
for (var i=0; i<keys.length; i++)
data += "<td>"+(stories[storyname][keys[i]] || "n.a.")+"</td>";
data += "</tr>";
}
data += "</table>";
If you want to ensure a particular order or use a custom table header, you of course also could use a static keys
array:
var keys = ["Tech Design","Front End Development","QA Testing","Development"];
var data = "<table><tr><td>StoryName</td><td>TechDesign</td><td>FED</td><td>QA</td><td>Development</td></tr>";
for (storyname in stories) {
…
Post a Comment for "Remove Duplicate On Json Iteration"