我正在尝试从 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/