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

Mar*_*ner 4 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
);
Run Code Online (Sandbox Code Playgroud)

现在我应该得到3个对象。从这里我想获得每个值[200,18,100]并将它们加在一起,这样我const totalSpending就等于318

Nic*_*ons 8

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

上面的方法将获取topUp和的属性value,然后value如果topUp为true,则将其添加到累加器(即总和)中;如果为true,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);
Run Code Online (Sandbox Code Playgroud)

  • 这是更好的答案。:) (2认同)