javascript - 如何提取对象的值并计算它们?

标签 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 相对轻松地实现此目的, conditional operatordestructuring assignment :

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);

上面会得到属性topUpvalue,然后将value加到累加器中(即总和)如果topUp 为 true,如果为 false,则返回 acc(因此不会添加到总和)。

或者,您可以删除三元并使用带有 bool 值的数学:

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);

关于javascript - 如何提取对象的值并计算它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55003422/

相关文章:

javascript - 强制 Moment.js format() 忽略夏令时 JS

Javascript - 来自文本内容的额外空间

javascript - 如何在 React 搜索栏中实现正则表达式过滤器?

javascript - 显示是否隐藏 jQuery

javascript - 无法单击所有元素上的元素

javascript - 长轮询客户端框架

javascript - 将元素附加到 div 时添加换行符

javascript - 替换字符串中的撇号

javascript - 将多个具有相同结构的html标签设置为下一个div的高度

javascript - 订阅子属性的 knockout 可观察对象并在 TypeScript 的绑定(bind)上下文中调用父方法