javascript - 如何提取对象的值并计算它们?
问题描述
我不知道如何提取对象中属性的值然后计算它们。
所以我有如下:
const data = [
{
topUp: true, value: 200
},
{
topUp: true, value: 18
},
{
topUp: false, value: 20
},
{
topUp: true, value: 100
},
]
const totalSpending = data.filter(
transaction => transaction.topUp == true
);
现在我应该得到 3 个对象。从这里我想得到每个像 [200, 18, 100] 的值并将它们加在一起,所以我的const totalSpending
将是 318。
解决方案
您可以使用reduce、条件运算符和解构赋值相对轻松地实现这一点:
const data = [{topUp: true, value: 200}, {topUp: true, value: 18}, {topUp: false, value: 20}, {topUp: true, value: 100}],
res = data.reduce((acc, {topUp, value}) => topUp ? acc + value : acc, 0);
console.log(res);
上面会得到 和 的属性topUp
,如果为真value
则value
加到累加器中(即总和)topUp
,如果为真则false
返回acc
(因此不会加到总和中)。
或者,您可以删除三元并将数学与布尔值一起使用:
const data = [{topUp: true, value: 200}, {topUp: true, value: 18}, {topUp: false, value: 20}, {topUp: true, value: 100}],
res = data.reduce((acc, {topUp, value}) => acc + value*topUp, 0);
console.log(res);
推荐阅读
- button - 如何更改 SwiftUI 中按钮的背景颜色?
- python-3.7 - 修改函数中的类项列表
- swift - Code=50 “No such payment_intent” 当确认条带的支付意图时
- c# - 如何在c#的特定文件夹中读取所有文件并从这些文件中读取数据
- ios - 如何使用 SwiftUI 制作自定义图像 resizable()
- javascript - easeOutBack 动画和磁力效应
- jquery - 如何修复谷歌对网页上动态生成的内容的抓取
- java - Switch 没有被红色标记,我不知道原因
- python - 在 python 的 AWS Rekognition 输出中保持字典元素的顺序相同
- authentication - 远程服务器返回错误:(401) Unauthorized Error using jwt with asp.net core