javascript - 来自 JSON 数组的总和值
问题描述
很抱歉,如果这是重复的,但我正在尝试对 JSON 输出中的值求和,我可以对一个属性的值求和,但我需要对每个属性的月份匹配的值求和,任何帮助赞赏,
let json =
{
"months":[
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov"
],
"data":{
"label":[
{
"Electricity":[
{
"total_bill":"84.54",
"due_date":"2020-06-30"
},
{
"total_bill":"62.38",
"due_date":"2020-07-30"
}
]
},
{
"Gas":[
{
"total_bill":"133.26",
"due_date":"2020-06-29"
},
{
"total_bill":"120.25",
"due_date":"2020-07-30"
}
]
}
]
}
}
比如我想加上6月份(2020-06)的电力和燃气的total_bill,并求和7月份(2020-07)的total_bill,请忽略months数组,它仅用于在图表中显示信息.
编辑:
到目前为止我尝试过的是:
let labels = [];
//Get labels name, eg. Electriciy, Gas, Water, etc
for(let i = 0; i < json.data.label.length; i++) {
labels.push(Object.keys(json.data.label[i]).toString());
}
//Tried to sum them but only figure out how to sum for the same property
let temp = [];
for (let i = 0; i < json.data.label.length; i++) {
let str = labels[i];
let values = json.data.label[i][str];
let sum = 0;
for (let j = 0; j < values.length; j++) {
sum = sum + Number(values[j].total_bill);
}
temp.push(sum);
}
//Desired output is:
//84.54 + 133.26 and 62.38+120.25
temp = [217.8,182.63];
非常感谢您对此进行调查并提供帮助
循环编辑:
好的,在玩完循环之后,我能够找到对值求和并返回所需输出的那个,谢谢
for (let i = 0; i < json.data.label.length; i++) {
let sum = 0;
for (let j = 0; j < json.data.label.length; j++) {
sum = sum + Number(json.data.label[j][labels[j]][i].total_bill);
}
temp.push(sum);
}
console.log(temp); // [217.8, 182.63]
解决方案
var sumgas = 0;
var sumelectric = 0;
var date = '2020-06-20';
json['data']['label'].forEach(function(row,idx){
try{
row['Gas'].forEach(function(row,idx){
if(new Date(row['due_date']).getTime() > new Date(date).getTime())
{
sumgas += parseInt(row['total_bill'])
}
})
row['SumGas'] = sumgas
}
catch(e){
}
try{
row['Electricity'].forEach(function(row,idx){
if(new Date(row['due_date']).getTime() > new Date(date).getTime())
{
sumelectric += parseInt(row['total_bill'])
}
})
row['sumelectric'] = sumelectric
}
catch(e){
}
});
console.log(sumgas)
console.log(sumelectric)
您可以使用此代码而无需任何更改
推荐阅读
- laravel - 尽管选择不同,但数据库中的重复记录存储
- docker - Kubernetes - 我的 2 个应用程序部署仅在一个“参数”中有所不同 - 我可以拥有将引用它们的服务吗?
- reactjs - React 和 redux 使用异步数据获取
- java - 如何反向打印堆栈?
- html - 如何在带有溢出的父元素外部显示下拉菜单:CSS中的自动?
- swift - SwiftUI:重置 TabView
- javascript - React组件中如何使用reduce计算总量?
- r - 使用 R 和 XML 解析国家气象服务数据时遇到问题
- postgresql - Hypersistence Micronaut Postgres 日期范围问题
- javascript - 如何获取网站的 javascript 代码?