2017-09-26 3 views
0

J'ai la réponse dynamique suivante dans JSON, donc j'ai un objet liste et je veux afficher et différencier les données en utilisant form_id. s'il vous plaît me dire comment y parvenir ...comment afficher/différencier les données de la réponse json

//list object 
formsSummery: any = []; 

this.formsSummery = (data[0] as any).data_points; 

    [ { 
    "job" : 10, 
    "data_points" : [ { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T13:17:33.489Z", 
    "form_id" : 2, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "2.2", 
    "field2" : "two", 
    "field3" : "2", 
    "field4" : "1" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T13:03:56.757Z", 
    "form_id" : 7, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "thirteen", 
    "field2" : "fourteen", 
    "field3" : "fifteen", 
    "field4" : "sixteen" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-27T11:58:59.735Z", 
    "form_id" : 7, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "17", 
    "field2" : "TWENTY", 
    "field3" : "19", 
    "field4" : "1", 
    "field5master" : "EIGHTEEN", 
    "field6" : "TRUE" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T07:23:26.468Z", 
    "form_id" : 7, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "five", 
    "field2" : "seven", 
    "field3" : "six", 
    "field4" : "eight" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T07:24:14.729Z", 
    "form_id" : 7, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "nine", 
    "field2" : "eleven", 
    "field3" : "ten", 
    "field4" : "twele" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T08:29:36.728Z", 
    "form_id" : 2, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "2.1", 
    "field2" : "one", 
    "field3" : "1", 
    "field4" : "true" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-26T07:18:10.401Z", 
    "form_id" : 7, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "one", 
    "field2" : "three", 
    "field3" : "two", 
    "field4" : "four" 
    }, { 
    "user_id" : 11, 
    "ingest_time" : "2017-09-27T11:57:06.188Z", 
    "form_id" : 2, 
    "form_revision" : 1, 
    "device_id" : 0, 
    "field1" : "2.3", 
    "field2" : "THREE", 
    "field3" : "3", 
    "field4" : "TRUE" 
    } ] 
} ] 

Je veux afficher les données en utilisant form_id. Je veux afficher les données dans la table en utilisant form_id (tous les tableaux pour form_d = 7 dans une table) comme ceci, et un certain nombre de table = nombre d'identifiants de formulaire.

+0

Que voulez-vous dire par _Je souhaitez afficher et de différencier les données en utilisant form_id._? Voulez-vous filtrer vos données? Sous quels critères? – bazzells

+0

Oui! Je veux filtrer en utilisant la propriété form_id – Rahul

+0

Mais s'il y a plusieurs objets avec le même 'form_id', que voulez-vous qu'il arrive à vos données? Voulez-vous conserver l'objet le plus récent, garder l'objet le plus ancien, autre chose ...? – bazzells

Répondre

0

Je suggère de commander d'abord votre tableau data_points, avec quelque chose comme ceci post. Ensuite, utilisez un Set pour suivre le form_id's dans votre tableau. Comme vous filtrez, si le form_id est déjà dans votre Set, vous l'ignorerez.

Exemple:

let x = new Set(); 
const y = this.formsSummery[0].data_points.filter(z => { 
    return !x.has(z.form_id) ? x.add(z.form_id) : null 
}) 

Donc, si !x.has(z.form_id) est évaluée à true, x.add(z.form_id) sera retourné, qui évaluera également à true - et l'objet désiré sera ajouté à votre tableau filtré.

enter image description here

+0

Avez-vous eu le travail? – bazzells

+0

En fait, je reçois EXCEPTION: Impossible de lire la propriété 'filtre' de – Rahul

+0

non défini, donc l'accès au tableau est légèrement désactivé. Pouvez-vous publier l'intégralité de l'objet de réponse? Peut-être une capture d'écran d'un console.log? – bazzells

0
var ret = 0 
    function filter(filterId) { 
     data = formsSummery[0].data_points; 
     for (i in data) { 
     if (data[i].form_id == filterId) { 

      if (ret != 0 && (new Date(data[i].ingest_time).getTime()) >= (new Date(ret.ingest_time).getTime())) { 
      ret = (data[i]); 
      } 
      else { 
      ret = (data[i]) 
      } 
     } 
     } 
     return ret; 
    } 
    var result = filter(2) //your filter id 
    console.log(result) 

pas sûr de la date du temps