简体   繁体   English

如何从json响应中显示/区分数据

[英]how to display/differentiate data from json response

I have following dynamic response in JSON , so I have one list object and I want to display and differentiate data using form_id. 我在JSON具有以下动态响应,因此我有一个列表对象,我想使用form_id显示和区分数据。 please tell me how to achieve this... 请告诉我如何实现此目标...

//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"
  } ]
} ]

I want to display data using form_id . 我想使用form_id显示数据。 I want to display data in the table using form_id (all arrays for form_d=7 in one table) like this, and a number of table = number of form ids. 我想像这样使用form_id(一个表中的form_d = 7的所有数组)在表中显示数据,并且表的数量=表单ID的数量。

I would suggest first ordering your data_points array, with something like this post . 我建议您首先对data_points数组进行排序,例如this post Then use a Set to keep track of the form_id's in your array. 然后使用Set来跟踪数组中的form_id's As you filter, if the form_id is already in your Set , you'll ignore it. 过滤时,如果form_id已在Set ,则将忽略它。

Example: 例:

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

So if !x.has(z.form_id) evaluates to true , x.add(z.form_id) will be returned, which will also evaluate to true - and the desired object will be added to your filtered array. 因此,如果!x.has(z.form_id)计算结果为truex.add(z.form_id)将被退回,这也将评估为true -和所需的对象将被添加到您的滤波阵列。

enter image description here 在此处输入图片说明

 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)

not sure about date time 不确定日期时间

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM