javascript - 指向 JSON blob 中的不同值以放入数组中
问题描述
我有一些完美运行的代码,它将数据提取到“计数”json 字段中并将其放入数组中。这是该代码:
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 label = data.report.data.reduce((r, e) => {
e.breakdown.forEach(el => {
let key = "data";
if (!r[key]) r[key] = []
r[key].push(...el.counts)
})
//return r['data'];
return r;
}, {})
console.log(label);
但是,我想复制这段代码,并拉出“day”字段(在上面的示例中,它是 3)。
const label = data.report.data.reduce((r, e) => {
e.breakdown.forEach(el => {
let key = "data";
if(!r[key]) r[key] = []
r[key].push(...el.day)
})
//return r['data'];
return r;
}, {})
console.log (label);
在上述情况下,我只是将“counts”更改为“day”,但这会产生错误。我认为这是因为“day”是 JSON 中“counts”之上的一个级别,所以我尝试删除 el.day 之前的一个句点,但它给了我以下错误。
Uncaught SyntaxError: Unexpected token.
欣赏它非常简单,但我如何返回日值而不是计数值。
解决方案
breakdown
因为day
属性是对象的直接属性,所以你不必循环访问的那一天data.report.data
,它应该是简单的:
const label = data.report.data.reduce((r, e) => {
if( e.hasOwnProperty('day') ) r.push(e.day);
return r;
}, {})
注意:最好使用.hasOwnProperty()
检查对象是否具有指定的属性作为自己的属性。
推荐阅读
- c++ - 在mac os上编译代码的未解析符号
- mysql - laravel 联合查询以获取一天中每小时的数据,如果没有数据则显示 0
- azure - 用于文件处理的 Azure 后台服务
- javascript - 在解决了包含嵌套承诺的承诺之后执行代码
- c# - 尝试将记录插入数据库时出现错误消息
- c# - ASP.NET Eval ToString 格式货币文化指定
- apache2 - Apache2从http重写/重定向到https
- python - python中的散点图groupby列
- node.js - 找不到全局安装的节点(Ubuntu 18.04)
- reactjs - 在redux reducer中修改数组中特定项目的状态