Philipp Kishkovarov
Philipp Kishkovarov

Reputation: 223

Calculations inside of loop and how to return sum of values . Vuejs

I'm very beginner to javascript and need to navigate me on the right way how to use it in my task.

I have a massive financial instrument developed on php and I need to build complex financial calculator that shows everything with reactivity. I need help to figure out how to make complex calculations with many if statements inside of the loop and then sum output value from each object in array and return total summed value. Using Vuejs for this.

So my cashDividends() must be a sum of calculated values from each object in the loop.

Below I put a piece of code to understand problem I'm facing.

 new Vue({
    el: "#waterfall",
    data() {
        return {
        info: {
            cash_dividends: true,
            converted_liabilities: true,
        },
        equities: [
            @foreach($preferredEquities as $equity)
            { name: '{{ $equity->name }}', id: {{ $equity->id }} },
            @endforeach
            ]
        }
    },
    computed: {
        remainingExit () {
            return this.form.exit_value - this.form.uncovered_debt - this.form.transaction_fees
        },
        cashDividends() {
    //I supposed should be something like this.     
          this.equities.forEach(function(equity)
          {
            //Here I make a lot of calculations with bunch of if statements using object and DOM input values. for each object 

          }
          // And here I need to return sum of calculated values from each object (equity) in array 
        }
    },

Any tips guys, just need to figure out the concept.

Upvotes: 0

Views: 1571

Answers (1)

ic3b3rg
ic3b3rg

Reputation: 14937

it sounds like you should use a reduce

const total = this.equities.reduce((sum, equity) => {
  const myEquityCalc = << something >>;
  return sum + myEquityCalc;
}, 0)

Demo:

const equities = [{value: 100}, {value: 200}];

const total = equities.reduce((sum, equity) => {
  return sum + equity.value;
}, 0)

console.log(total)

Upvotes: 3

Related Questions