我有一组数据["Bet:W:2:23:, "Bet:P:6:2", "Bet:W:5:3"]
。
[0]在#2上赢23美元 [1]在#6上下注2美元等等
如何安排数据以便我可以将赌注添加到池中,然后在支持获胜者的所有人之间划分池?
我试过迭代并分离':'。这意味着我可以创建投注池,但这意味着我失去了赌注和他们下注的马之间的联系。我假设为了维持这种联系,我需要创建一个对象,但我还没有弄清楚如何做到这一点。
答案 0 :(得分:2)
您正在寻找map。
const bets = ["Bet:W:2:23", "Bet:P:6:2", "Bet:W:5:3"].map(b => {
const bet = b.split(':');
return {
type: bet[1],
number: bet[2],
amount: parseInt(bet[3], 10)
};
});
一旦您的数据处于易于使用的形式,您就可以执行其他有用的操作,例如使用reduce查找池数量:
const pool = bets.reduce((sum, bet) => sum + bet.amount, 0);
答案 1 :(得分:0)
最简单的方法是使用json定义对象,并创建一个对象数组。通常您会遵循以下格式:
{{1}}
然后对于每次下注,你将使用key:每次下注的值对构建这样的东西,将它推送到数组(这是你可能试图在你的例子中实现的json表示法)
{{1}}
使用该格式,您应该能够使用forEach()或.each方法访问您的betPool,以使用其密钥正确解析数据。
如果您需要进一步详细说明,请与我们联系。
答案 2 :(得分:0)
听起来您希望您的数据做两件事:跟踪总投注池,并能够从任何特定的马(如支付时间)检索所有投注(有更好的投注)。您可以自定义一个对象来执行此操作。
var raceObj = {pool: 0};
然后迭代为每匹马添加一个属性。例如,从数组['Bet:W:5:120','Bet:P:5:25','Bet:W:5:40','Bet:W:8:15']
我们喜欢对象:
{
pool: 200,
'5': {
W: [120, 40],
P: [25]
},
'8': {
W: [15],
P: []
}
}
您可以通过迭代数组来构建此对象:
for (var i = 0; i < arr.length; i++) {
var result = /^Bet:(W|P):([0-9]+):(.+)$/.exec(arr[i]);
var type = result[1];
var horse = result[2];
var bet = parseInt(result[3]);
raceObj.pool += bet;
if (!raceObj.hasOwnProperty(horse)) {
raceObj[horse] = {W: [], P: []};
}
raceObj[horse][type].push(bet);
}
我可能没有完全预料到您的需求,但我觉得如果您只是这些计算,那么构建一个真正定制的对象是javascript中的一个很好的选择。