import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; @Injectable() export class VisualizationService { private http: Http; constructor(http: Http) { this.http = http; } doSomething(){ console.log('Done!'); } contaisObj(nameKey, prop, myArray){ for (let i=0; i < myArray.length; i++) { if (myArray[i][prop] === nameKey[prop]) { return true; } } return false; } indexOfObj(nameKey, prop, myArray){ for (let i=0; i < myArray.length; i++) { if (myArray[i][prop] === nameKey[prop]) { return i; } } } countAnswerOccurrence(datum){ let freq_map = [] for(let k = 0; k < datum.length; k++){ if(this.contaisObj(datum[k], "answer", freq_map)){ let index = this.indexOfObj(datum[k], "answer", freq_map); freq_map[index]["qty"] += 1; } else{ freq_map.push({ "answer": datum[k].answer, "qty": 1 }); } } return freq_map } parseData(data){ for (let i=0; i < data.length; i++) { for(let j=0; j < data[i].length; j++){ data[i][j] = JSON.parse(data[i][j]); } } return data; } genFrequencyMap(data){ let freq_map = []; for(let i = 0; i < data.length ; i++){ let question = data[i]; let questionData = this.parseData(question.data); freq_map.push({ "question": question.question, "data": this.countAnswerOccurrence(questionData) }); } return freq_map; } }