javascript - 从 json 中获取特定值并将其放入数据数组中

标签 javascript json

我正在尝试从 JSON 响应中获取某些数据位以放入数组中。这是我的 JSON 响应,我感兴趣的是每小时的“计数”,由页面“语句”或“登录”分隔。

{
   "report":{
      "type":"trended",
      "elements":[
         {
            "id":"page",
            "name":"Page"
         }
      ],
      "reportSuite":{
         "id":"retail",
         "name":"GlobPROD"
      },
      "period":"Wed.  3 Oct. 2018 - Fri.  5 Oct. 2018",
      "metrics":[
         {
            "id":"pageviews"
         }
      ],
      "segments":[
         {
            "id":"s13bb443734ab6a764639ff37",
            "name":"Information"
         }
      ],
      "data":[
         {
            "name":"Wed.  3 Oct. 2018",
            "year":2018,
            "month":10,
            "day":3,
            "hour":0,
            "breakdown":[
               {
                  "name":"CATEGORY:>Statement",
                  "url":"",
                  "counts":[
                     "242"
                  ]
               },
               {
                  "name":"CATEGORY:>Log On",
                  "url":"...CheckId.do",
                  "counts":[
                     "237"
                  ]
               }
            ],
            "breakdownTotal":[
               "2123"
            ]
         },
         {
            "name":"Wed.  3 Oct. 2018 (Hour 1)",
            "year":2018,
            "month":10,
            "day":3,
            "hour":1,
            "breakdown":[
               {
                  "name":"CATEGORY:>Statement",
                  "url":"",
                  "counts":[
                     "152"
                  ]
               },
               {
                  "name":"CATEGORY:>Log On",
                  "url":"",
                  "counts":[
                     "135"
                  ]
               }
            ],
            "breakdownTotal":[
               "1140"
            ]
         }

所以我想要的首先是能够拆分语句和登录之间的每小时数据,其次构建一个每小时数据的数组。

logindata: [237, 135]

statementdata: [242, 152]

我读到我可以尝试使用类似这样的东西来获取值:

 var t = JSON.parse('{"name": "", "skills": "", "jobtitel": "Entwickler", "res_linkedin": "GwebSearch"}');

但是我如何创建一个小循环来获取我在示例中指定的所有值?

最佳答案

您可以将 reduce 方法与 forEach 一起使用,并构建一个对象,其中每个 CATEGORY 都是单独的属性。

const data = {"report":{"type":"trended","elements":[{"id":"page","name":"Page"}],"reportSuite":{"id":"retail","name":"GlobPROD"},"period":"Wed.  3 Oct. 2018 - Fri.  5 Oct. 2018","metrics":[{"id":"pageviews"}],"segments":[{"id":"s13bb443734ab6a764639ff37","name":"Information"}],"data":[{"name":"Wed.  3 Oct. 2018","year":2018,"month":10,"day":3,"hour":0,"breakdown":[{"name":"CATEGORY:>Statement","url":"","counts":["242"]},{"name":"CATEGORY:>Log On","url":"...CheckId.do","counts":["237"]}],"breakdownTotal":["2123"]},{"name":"Wed.  3 Oct. 2018 (Hour 1)","year":2018,"month":10,"day":3,"hour":1,"breakdown":[{"name":"CATEGORY:>Statement","url":"","counts":["152"]},{"name":"CATEGORY:>Log On","url":"","counts":["135"]}],"breakdownTotal":["1140"]}]}}

const result = data.report.data.reduce((r, e) => {
  e.breakdown.forEach(el => {
    let key = el.name.split(':>')[1];
    if(!r[key]) r[key] = []
    r[key].push(...el.counts)
  })
  return r;
}, {})

console.log(result)

关于javascript - 从 json 中获取特定值并将其放入数据数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52702123/

相关文章:

javascript - Vue.js 使用类绑定(bind)进行奇怪的渲染

javascript - 从不同的 Spotfire 服务器动态加载不同的 Spotfire 报告

json - 如何使用 Jackson 序列化带有多个参数构造函数的 scala 对象?

javascript - JavaScript 中的数组格式化

java - 不正确的 JSONException

php - Swift4 JSONDecoderExpected 解码 Dictionary<String, Any> 但找到了一个数组

javascript - 源 map 资源管理器中的未映射字节是什么

javascript - 在 Javascript 中比较值与前导零

javascript - 是否有一种简单的转换方法可以将 chrome 消息传递转换为 safari 消息传递语法?

javascript - 从 JSON 中的现有数据创建日期显示