Expense split 
Group expense splitting library.
Usage
const expenseSplit = require('expense-split')
const group = ['Michael', 'Trevor', 'Franklin']
const transactions = expenseSplit(group, [
{ name: 'Michael', amount: 7920 },
{ name: 'Trevor', amount: 2880 },
{ name: 'Trevor', amount: 300 },
{ name: 'Franklin', amount: 8000, for: ['Michael', 'Franklin'] },
{ name: 'Franklin', amount: 50, for: ['Michael', 'Franklin'] }
])
Will output:
[
{ from: 'Trevor', to: 'Franklin', amount: 325 },
{ from: 'Trevor', to: 'Michael', amount: 195 }
]
Can also work with the light syntax:
const transactions = expenseSplit(group, [
['Michael', 7920],
['Trevor', 2880],
['Trevor', 300],
['Franklin', 8000, ['Michael', 'Franklin']],
['Franklin', 50, ['Michael', 'Franklin']]
])
Also comes with a function to get aggregated balances for all users:
const balances = expenseSplit.getBalances(group, [
{ name: 'Michael', amount: 7920 },
{ name: 'Trevor', amount: 2880 },
{ name: 'Trevor', amount: 300 },
{ name: 'Franklin', amount: 8000, for: ['Michael', 'Franklin'] },
{ name: 'Franklin', amount: 50, for: ['Michael', 'Franklin'] }
])
Will output:
{
Michael: -195,
Trevor: 520,
Franklin: -325
}
If you have a balances object, you can also compute the split directly:
const transactions = expenseSplit.fromBalances(balances)