我一般都不熟悉JS和编程。我正在为彼此付款的人编写费用计算器。计算器应允许个人为整个团体或部分团体或一个人付费。 我的问题是我不知道如何存储每对人的数据。 假设一个小组由5个人组成。鲍勃付给爱丽丝10美元。爱丽丝为鲍勃,约翰和她自己支付了50美元,约翰为整个团队支付了35美元。
存储这种计算的更好方法是什么?
我当时在考虑使用对象,但似乎不适合这种情况
我需要一种方法来存储组中每对人的债务,以便我可以轻松地修改此信息。
答案 0 :(得分:1)
我将使用对象(如果不需要保存所有交易):
假设它是3人一组
const Bob = {
friends: [
{Alice: 10},
],
};
const Alice = {
friends: [
{Bob: 50/3},
{John: 50/3},
],
};
const John = {
friends: [
{Bob: 35/3},
{Alice: 35/3},
],
};
const groupOfFriends = [Bob, Alice, John];
我认为从这种数据结构中,您可以推测出谁欠谁东西。
答案 1 :(得分:1)
我只保留一系列交易:
const all = Symbol();
const transactions = [
{ from: "Alice", to: "Bob", amount: 500 },
{ from: "Bob", to: all, amount: 1000 }
];
这样,您可以轻松添加新交易,例如
transactions.push({ from: "Bob", to: "Alice", amount: 500 });
要获得两个人之间的当前余额,您可以查看交易并进行汇总:
let balance = 0; // from Alice to Bob
for(const { from, to, amount } of transactions) {
if(from === "Alice" && (to === "Bob" || to === all))
balance += amount;
if(from === "Bob" && (to === "Alice" || to === all))
balance -= amount;
}