首页 > 解决方案 > 如何提取对象的值并计算它们?

问题描述

我不知道如何提取对象中属性的值然后计算它们。

所以我有如下:

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。

标签: javascript

解决方案


您可以使用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,如果为真valuevalue加到累加器中(即总和)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);


推荐阅读