VueJs / Laravel。不同对象中的多个数组的总和

时间:2018-12-27 19:36:22

标签: javascript vue.js vuejs2

我使用此代码显示我所有的人。

blocksize

//每个人都是一个对象。在每个对象中都有多个对象(金钱给定)。我需要计算这些对象中存在的总金额(数组)的总和(分配给每个人的所有金钱)

//例如,相对于每个人的所有学分。

我过去常常用Php做到这一点,但是如何用Computing做到这一点呢?

Vuejs代码:

<div class="col-md-3" v-for="person in persons">
</div>   

谢谢!

这里是一个人的样本。多个对象,并且在每个对象内部,usercashfloats具有多个对象,我需要计算出数量。 (每个对象中存在的数量) enter image description here

2 个答案:

答案 0 :(得分:2)

您的computed属性应类似于:

  computed:{
      personsWithAount(){

             const reducer = (accumulator, currentValue) => accumulator.amount + currentValue.amount;
              return  this.persons.map((pers)=>{
                      let p=pers;
                      if(pers.usercashfloat.length==0){

                       p.totalAmount=0;
                       }else if(pers.usercashfloat.length==1){
                           p.totalAmount=pers.usercashfloat[0].amount;

                       }else{
                            p.totalAmount=pers.usercashfloat.reduce(reducer);
                       }
                     return p;
                     });


          }
       }

reduce函数文档

在您的模板中,您将看到类似:

 <div class="col-md-3" v-for="person in personsWithAmount">
     {{person.totalAmount}}
 </div>   

答案 1 :(得分:2)

可能是这样的:

<div class="col-md-3" v-for="person in preparedPersons">
</div> 

var app = new Vue({
el: '#app',
data: {
   persons:[],
},
computed: {
   preparedPersons : function() {
      return this.persons.map(
         (p) => {
             return {
                   ...p, 
                   sumOfAmount: p.usercashfloat.reduce(
                       (acc, cur) => acc.amount + cur.amount
                   )
              };
          }
      )
   }
},
methods: {
getPersons (),
},