gpt4 book ai didi

javascript - 指向 JSON blob 中的不同值以放入数组

转载 作者:行者123 更新时间:2023-11-30 09:19:23 25 4
gpt4 key购买 nike

我有一些完美的代码,它提取“计数”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()来检查对象是否将指定的属性作为自己的属性。

关于javascript - 指向 JSON blob 中的不同值以放入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com