Home > Mobile >  How to divide a value and distribute it on my html page?
How to divide a value and distribute it on my html page?

Time:04-16

I have two values on my html page, that I got from a form.

The person completes the amount of money they have on one input, and on the other input, the number of people.

So, my question is:

How do i divide the amount.value by the people.value, and distribute it, in a way it appears as shown in the example below?

Amount: 150 / Number of People: 3

-Person 1 - 50
-Person 2 - 50
-Person 3 - 50

What i'm actually struggling with, is to create a function that will add to the HMTL another person the result, depending on the number of people added previously.

CodePudding user response:

The code down below just finds the total share of all people and distributes the amount among them dependin on their shares.

/*----- Define your variables in here ------*/
    var amount = 150;
    var people = {
        1: 0.75,
        2: 0.15,
        3: 0.10
    }
    var totalSharePerc = 0;

/*----- Loop thruogh people to calculate total sum ------*/
    for (const [key, value] of Object.entries(people)) {
        totalSharePerc = totalSharePerc   value;
    }
    
/*----- Loop thruogh people and split the amount ------*/
    for (const [key, value] of Object.entries(people)) {
        
        /*------ Calculate share of person -----*/
            var share = (amount*value/totalSharePerc);
        
        /*----- Do whatever you want ------*/
            console.log("Person" key " => " share);
        
    }

CodePudding user response:

You can use Array#reduce() to calculate the total share for every person involved.

This assumes you have a mapping defined of which person has to cover which share (which you will need to have if you want to distribute in non-equal shares).

const amount = 150;
// define mapping of percentages to persons
const sharesPerPersonPct = {
  1: 0.75,
  2: 0.15,
  3: 0.1,
};

// create a mapping of total values to persons
const sharesPerPersonTotal = Object.entries(sharesPerPersonPct).reduce(
  (allShares, [personId, share]) => {
    allShares[personId] = {
        pct: share,             // add percentage (optional)
        total: amount * share   // add total share
    }
    return allShares;
  },
  {}
);

console.log("Resulting JS object:")
console.log(sharesPerPersonTotal);

Object.entries(sharesPerPersonTotal).forEach(([personId, share]) => console.log(`Person ${personId} has to cover ${(share.pct * 100).toFixed(2)}% which amounts to ${share.total}$.`))

  • Related