Javascript 访问带有月号的嵌套JSON
我得到了一个带有每月值的json文件。我需要访问这些。我无法将此存档。也许我只是犯了个错误Javascript 访问带有月号的嵌套JSON,javascript,json,variables,Javascript,Json,Variables,我得到了一个带有每月值的json文件。我需要访问这些。我无法将此存档。也许我只是犯了个错误 {"sales": { "total_sales":"999.99", "totals": { "2020-10-01": { "sales":"9.99",
{"sales":
{
"total_sales":"999.99",
"totals":
{
"2020-10-01":
{
"sales":"9.99",
}
}
}
}
如何从9.99的第二次“销售”中获得价值
我使用JS获得总销售额。这很有效
我真的需要你的帮助
更清楚地说: JSON文件是Woocommerce的原始文件 我使用原始API实现Json,并且需要每月的销售额 我已经用Object.keys尝试过了,但不起作用。我只获取(2020-01-01)名称,而不获取嵌套值 以下是关于原始JSON文件的信息: 糟糕的是日期字符串作为键
也许有一种棘手的方法来存档结果。因此,假设您有变量名为salesReport的数据,如下所示:
{
"sales": {
"totals": {
"2015-01-18": {
"sales": "-17.00",
},
"2015-01-21": {
"sales": "597.10",
},
"2015-02-18": {
"sales": "32.00",
},
"2015-03-12": {
"sales": "22.00",
},
},
}
}
然后,您希望访问每个日期的sales.totals数据,而不必知道关键细节。此外,如果需要存储密钥(在本例中为日期)及其各自的值,则可以首先使用以下代码中的as将其转换为条目:
const salesReportTotalsEntries = Object.entries(salesReport.sales.totals);
然后,您可以使用访问每个日期的销售数据
salesReportTotalsEntries[0][1].sales
salesReportTotalsEntries[1][1].sales
最后一步是,您可以使用根据每个月的数据对每个totals sales数据求和。以下是完整的代码:
const salesReport={
“销售”:{
“总数”:{
"2015-01-18": {
“销售”:“-17.00”,
},
"2015-01-21": {
“销售”:“597.10”,
},
"2015-02-18": {
“销售”:“32.00”,
},
"2015-03-12": {
“销售”:“22.00”,
},
},
}
};
const salesReportTotalsEntries=Object.entries(salesReport.sales.totals);
const salesReportTotalsByMonths=salesReportTotalsEntries.reduce((a,v)=>{
常量currentMonth=v[0]。拆分('-')[1];
如果(!a[currentMonth]){
a[currentMonth]=编号(v[1]。销售);
返回a;
}
a[currentMonth]+=编号(v[1]。销售);
返回a;
}, {});
log(`1月份的总销售报告为${salesReportTotalsByMonths['01']}`);
log(`2月份的总销售报告为${salesReportTotalsByMonths['02']}`)代码>这是否回答了您的问题@贾雷德史密斯-这似乎是另一个“我有一个可怕的数据结构”请帮助我搜索它。OP的问题可能是日期字符串是关键。@RandyCasburn是的,可能是。这是(间接地)在链接的DUP中被覆盖的,所以…欢迎来到Stackoverflow。请拿着这个(并得到一个徽章)。你的问题缺乏任何独自解决这个问题的尝试。这个想法是让你试着做些事情,然后带着你无法解决的具体问题来到这里。在帮助中心进行参观和阅读将提供您所需的所有信息。格式为原始JSOn文件。所以我不知道如何获取数字变量来捕捉子值。工作起来很有魅力。非常感谢你。有没有办法用点代替逗号?我已经试过替换(“.”,“,”)。但它不起作用并抛出一个错误。嗨@Oliver,如果这个答案解决了您的问题,请不要忘记将这个答案标记为已接受:)