将数组中的数据排列到对象上

我有一系列的数据是["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中。