[英]How to calculate sum of array in JavaScript
我想计算 JavaScript 中数组数据的总和。
阵列:
[
{
red_team: {
count: 2,
money: 3000,
},
blue_team: {
count: 10,
money: 100000,
},
},
{
red_team: {
count: 1,
money: 1000,
},
blue_team: {
count: 100,
money: 200000,
},
}
]
预期结果:
{
red_team: {
count: 3,
money: 4000,
},
blue_team: {
count: 110,
money: 300000,
},
}
注意: red_team
& blue_team
是一个 Enum。
我怎么计算呢?
将数组传播到 lodash 的_.mergeWith()
中,并创建一个对数字求和的自定义程序,但对所有其他类型返回undefined
,以便 lodash 处理所有其他情况:
const data = [{"red_team":{"count":2,"money":3000},"blue_team":{"count":10,"money":100000}},{"red_team":{"count":1,"money":1000},"blue_team":{"count":100,"money":200000}}] const result = _.mergeWith({}, ...data, (a, b) => _.isNumber(a)? a + b: undefined ) console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
根据上面的评论,有无数种方法可以做到这一点。 我只是想出了一个(诚然相当冗长)
const arr = [
{
red_team: {
count: 2,
money: 3000,
},
blue_team: {
count: 10,
money: 100000,
},
},
{
red_team: {
count: 1,
money: 1000,
},
blue_team: {
count: 100,
money: 200000,
},
}
];
function sumByKeyAndProperty(arr, key, property){
let sum = 0
arr.forEach((obj) => {
sum+=obj[key][property]
})
return sum
}
returnObj = {
red_team: {
count: sumByKeyAndProperty(arr, 'red_team', 'count'),
money: sumByKeyAndProperty(arr, 'red_team', 'money'),
},
blue_team: {
count: sumByKeyAndProperty(arr, 'blue_team', 'count'),
money: sumByKeyAndProperty(arr, 'blue_team', 'money'),
}
}
console.log(returnObj)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.