Javascript 如何对json对象求和
这是我第一次在这里发帖,如果有什么遗漏或者没有太多信息,请告诉我。我在不断地学习 我从API中提取了一些数据,现在我需要整理所有数据,以便最终只保留键和每个键的总值 我需要每个Javascript 如何对json对象求和,javascript,Javascript,这是我第一次在这里发帖,如果有什么遗漏或者没有太多信息,请告诉我。我在不断地学习 我从API中提取了一些数据,现在我需要整理所有数据,以便最终只保留键和每个键的总值 我需要每个storeArea将每个区域内的boysTotal和girltotal的所有值相加,因此它看起来像这样:[area1,3193745.7189541734] 我从映射json开始,为每个区域找到了3个不同的对象,然后尝试将所有boysTotal和girltotal合并到一个数组中,这样我就可以使用reduce函数对整个数组
storeArea
将每个区域内的boysTotal
和girltotal
的所有值相加,因此它看起来像这样:[area1
,3193745.7189541734]
我从映射json
开始,为每个区域找到了3个不同的对象,然后尝试将所有boysTotal
和girltotal
合并到一个数组中,这样我就可以使用reduce函数对整个数组求和,但我肯定遗漏了一些重要的内容。它是什么?谢谢你的帮助
var results = [];
var json = {
"stores": [
{
"storeArea": "area1",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 1082220.3945979946,
"girlsTotal": 9585.8794674401543
},
{
"date": "2018-11-01",
"boysTotal": 1056643.6756958894,
"girlsTotal": 11018.898987932616
},
{
"date": "2018-12-01",
"boysTotal": 1022322.1218654147,
"girlsTotal": 11954.748339502334
}
]
},
{
"storeArea": "area2",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 91336.329372028267,
"girlsTotal": 0
},
{
"date": "2018-11-01",
"boysTotal": 78130.417193652393,
"girlsTotal": 0
},
{
"date": "2018-12-01",
"boysTotal": 100755.62136033915,
"girlsTotal": 0
}
]
},
{
"storeArea": "area3",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 66604.417069221658,
"girlsTotal": 0
},
{
"date": "2018-11-01",
"boysTotal": 63882.129662868538,
"girlsTotal": 0
},
{
"date": "2018-12-01",
"boysTotal": 108781.84734382466,
"girlsTotal": 0
}
]
},
{
"storeArea": "area4",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 0,
"girlsTotal": 1452.6775522557543
},
{
"date": "2018-11-01",
"boysTotal": 0,
"girlsTotal": 2366.423254655545
},
{
"date": "2018-12-01",
"boysTotal": 0,
"girlsTotal": 3485.5840149129986
}
]
},
{
"storeArea": "area5",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 3237887.746893588,
"girlsTotal": 0
},
{
"date": "2018-11-01",
"boysTotal": 3218724.4935297123,
"girlsTotal": 0
},
{
"date": "2018-12-01",
"boysTotal": 2925562.2916941536,
"girlsTotal": 0
}
]
},
{
"storeArea": "area6",
"totalStore": [
{
"date": "2018-10-01",
"boysTotal": 291293.35185208195,
"girlsTotal": 0
},
{
"date": "2018-11-01",
"boysTotal": 171962.47103846565,
"girlsTotal": 0
},
{
"date": "2018-12-01",
"boysTotal": 95615.439855929668,
"girlsTotal": 0
}
]
}
]
}
function add(a, b) {
return a + b;
}
results = json.map(function (x) {
console.log([x.stores])
return [x.storeArea, x.totalStore.map(function (y) {
var subTotal = [[y.boysTotal, y.girlsTotal].reduce(add)]
return subTotal
})]
});
您可以使用loadsh对json对象和数组执行操作 这是每个唯一元素的缩减情况 我总是使用u.groupBy,然后在应用缩减后将结果映射到数组。在这种情况下,还原操作为u.sumBy
var obj = [ {"name":"Jack ProjManager","count":12000}, {"name":"Jack ProjManager","count":750000}, {"name":"Joe ProjManager","count":45000} ];
var output = _(obj) .groupBy('name') .map((objs, key) => ({ 'name': key, 'count': _.sumBy(objs, 'count') })) .value(); console.log(output);
使用
map
和reduce
是一种方法,但您必须map
进入存储区和reduce
进入totalStore
:
const json={“stores”:[{“storeArea”:“area1”,“totalStore”:[{“date”:“2018-10-01”,“boysTotal”:1082220.3945979946,“girltotal”:9585.8794674401543},{“date”:“2018-11-01”,“boysTotal”:1056643.6756958894,“girltotal”:11018.8987932616},{“date”:“2018-12-01”,“boysTotal”:1022322.1218654147,“girltotal”:11954.833342},{“storeArea”,“totalStore”:[{“日期”:“2018-10-01”,“boysTotal”:91336.329372028267,“girlsTotal”:0},{“日期”:“2018-11-01”,“boysTotal”:78130.417193652393,“girlsTotal”:0},{“日期”:“2018-12-01”,“boysTotal”:100755.62136033915,“girlsTotal”:0},{“存储区”:“区域3”,“totalStore”:“日期”:“2018-10-01”,“boysTotal”:66604.4170692258,“girlsTotal”:2018-11“{”boysTotal:63882.129662868538,“girlsTotal”:0},{“日期”:“2018-12-01”,“boysTotal”:108781.84734382466,“girlsTotal”:0},{“存储区”:“区域4”,“totalStore”:[{“日期”:“2018-10-01”,“boysTotal”:0,“girlsTotal”:1452.6775522557543},{“日期”:“2018-11-01”,“boysTotal”:0,“girlsTotal”:2366.4232546545},{“日期”:“2018-12-01”,“girlsTotal”:“girlsTotal”:0“:3485.5840149129986},{”店面“:”area5“,”totalStore“:[{”日期“:”2018-10-01”,“boysTotal”:3237887.746893588,“GirlTotal”:0},{”日期“:”2018-11-01”,“boysTotal”:3218724.4935297123,“GirlTotal”:0},{”日期“:”2018-12-01”,“boysTotal”:2925562.2916941536,“GirlTotal”:0},{”店面“:”店面“:”area6”,“TotalStoreStore[-01”,“totalStore:”日期“,”2018-12-01:291293.35185208195,“女孩总数”:0},{“日期”:“2018-11-01”,“男孩总数”:171962.47103846565,“女孩总数”:0},{“日期”:“2018-12-01”,“男孩总数”:95615.43985929668,“女孩总数”:0}]}
const resp=json.stores.map(store=>([store.storeArea,store.totalStore.reduce((a,e)=>a+e.boysTotal+e.girltotal,0)])
控制台日志(resp)代码>
var结果=[];
var json={
“商店”:[
{
“存储区”:“区域1”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:1082220.3945979946,
“女孩总数”:9585.8794674401543
},
{
“日期”:“2018-11-01”,
“boysTotal”:1056643.6756958894,
“女孩总数”:11018.8987932616
},
{
“日期”:“2018-12-01”,
“boysTotal”:1022322.1218654147,
“女孩总数”:11954.748339502334
}
]
},
{
“存储区”:“区域2”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:91336.329372028267,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:78130.417193652393,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:100755.62136033915,
“女孩总数”:0
}
]
},
{
“存储区”:“区域3”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:66604.417069221658,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:63882.129662868538,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:108781.84734382466,
“女孩总数”:0
}
]
},
{
“存储区”:“区域4”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:0,
“女孩总数”:1452.6775522557543
},
{
“日期”:“2018-11-01”,
“boysTotal”:0,
“女孩总数”:2366.423254655545
},
{
“日期”:“2018-12-01”,
“boysTotal”:0,
“女孩总数”:3485.5840149129986
}
]
},
{
“存储区”:“区域5”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:3237887.746893588,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:3218724.4935297123,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:2925562.2916941536,
“女孩总数”:0
}
]
},
{
“存储区”:“区域6”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:291293.35185208195,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:171962.47103846565,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:95615.439855929668,
“女孩总数”:0
}
]
}
]
}
var i=0;
对于(i=0;i,以下代码段将完成工作:
json.stores.forEach(function(x){
var totalboys=0, totalgirls = 0; // for clarity & flexibility
x.totalStore.forEach(function(y){
totalboys += y.boysTotal;
totalgirls += y.girlsTotal;
})
results[x.storeArea] = totalboys + totalgirls;
console.log(results[x.storeArea])
})
在实际操作中查看它如何使用面向对象?json表示存储,总数组表示天数。使用存储json构建存储。它的构造函数反过来构建一个天数数组。我们教一个存储如何对自身进行合计(通过减少其总天数),我们教一天如何对自身进行合计(将男孩和女孩总数相加)
类存储日{
建造师(