gpt4 book ai didi

对象数组子集合中的 JavaScript 属性求和

转载 作者:行者123 更新时间:2023-11-30 08:24:10 25 4
gpt4 key购买 nike

我有一个对象数组,每个对象都可能有交易集合我需要提取数组的两个值

  • 所有对象的总和值
  • 所有交易的总金额
[
{
"id": "1",
"value": 2343,
"transactions": [
{
"id": 88,
"amount": 34,
},
{
"id": 89,
"amount": 111,
}
]
},
{
"id": "2",
"value": 345,
"transactions": [
{
"id": 90,
"amount": 44,
},
{
"id": 91,
"amount": 112,
}
]
}
]

我第一个实现的

objects.reduce((acc, transaction) => acc + transaction.value, 0);

但是第二个对我来说太难了;循环并减少每个对象?

最佳答案

对于 lodash,您可以使用 _.sumBy()获取值(value),并嵌套 _.sumBy() 调用以获取交易金额:

const data = [{"id":"1","value":2343,"transactions":[{"id":88,"amount":34},{"id":89,"amount":111}]},{"id":"2","value":345,"transactions":[{"id":90,"amount":44},{"id":91,"amount":112}]}];

const value = _.sumBy(data, 'value');

const transactions = _.sumBy(data, ({ transactions }) => _.sumBy(transactions, 'amount'));

console.log('value: ', value);
console.log('transactions: ', transactions);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

如果没有 lodash,您可以使用与 Array#reduce 相同的逻辑:

const data = [{"id":"1","value":2343,"transactions":[{"id":88,"amount":34},{"id":89,"amount":111}]},{"id":"2","value":345,"transactions":[{"id":90,"amount":44},{"id":91,"amount":112}]}];

const value = data.reduce((acc, { value }) => acc + value, 0);

const transactions = data.reduce((acc, { transactions }) =>
transactions.reduce((acc, { amount }) => acc + amount, 0)
, 0);

console.log('value: ', value);
console.log('transactions: ', transactions);

关于对象数组子集合中的 JavaScript 属性求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48362360/

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