2017-09-26 108 views
0

我在JSON中有以下动态响应,所以我有一个列表对象,我想使用form_id显示和区分数据。请告诉我如何做到这一点...如何显示/区分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" 
    } ] 
} ] 

我想使用form_id显示数据。 我想要像这样使用form_id(form_d = 7的所有数组)在这个表中显示数据,以及一些table = form数量的表单id。

+0

究竟你_I的意思要显示和使用form_id._区分数据?你想过滤你的数据吗?根据什么标准? – bazzells

+0

是的!我想过滤使用form_id属性 – Rahul

+0

但是,如果有多个对象具有相同的'form_id',你想要发生什么你的数据?你想保留最新的对象,保留最古老的对象,还有其他的东西......? – bazzells

回答

0

我会建议先订购你的data_points阵列,用这样的post。然后使用Set来跟踪阵列中的form_id's。在你过滤时,如果form_id已经在你的Set中,你会忽略它。

实施例:

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 
}) 

所以如果!x.has(z.form_id)计算结果为truex.add(z.form_id)将被返回,这也将评估为true - 和期望的对象将被添加到你的过滤阵列。

enter image description here

+0

你有没有得到它的工作? – bazzells

+0

实际上,我得到了EXCEPTION:无法读取未定义的属性“过滤器” – Rahul

+0

好的,所以访问数组稍微偏离。你能发布整个响应对象吗?也许是一个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) 

不知道日期时间