将数组中的数据排列到对象上
我有一系列的数据是["Bet:W:2:23:, "Bet:P:6:2", "Bet:W:5:3"]
。
[0]在#2上下注23美元[1]在#6上下注$ 2放置等
我如何安排数据,以便将投注添加到池中,然后将池分为支持获胜者的所有人?
我已经尝试遍历和分离':'。 这意味着我可以创build一个投注池,但这意味着我失去了投注和他们下注的马匹之间的联系。 我假设为了保持这种联系,我需要创build一个对象,但我一直没有能够解决如何做到这一点。
你正在寻找地图 。
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);
最简单的方法是使用json定义对象,并创build一个对象数组。 通常你会遵循这种格式:
var betPool = []; //defines empty object array for the betting pool
那么对于每一个赌注,您将使用每个赌注的key:value对来构造类似的东西,将它推到数组(这是您可能想要在您的示例中实现的json记法)
{ amount: 'this.value', horse: 'this.number', condition:'this.condition' }
使用这种格式,您应该能够使用forEach()或.each方法访问您的betPool,以使用其密钥来适当地parsing数据。
让我知道你是否需要进一步阐述。
这听起来像是你想让你的数据做两件事情:跟踪总的投注池,并能够从任何特定的马(如支付时间)检索所有的投注(与更高)。 你可以自定义一个对象来做到这一点。
var raceObj = {pool: 0};
然后通过添加一个属性为每个马迭代。 例如,从arrays['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: [] } }
你可以像这样迭代数组来构build这个对象:
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); }
我可能没有完全预料到你的需求,但我觉得如果你只是一次这些计算,然后build立一个真正自定义的对象是一个很好的select在JavaScript中。