我正在研究合同桥的评分脚本,只是为了咯咯笑。我将游戏存储为对象:
var game = {
team1 : { player1 : prompt("Team 1, first player: "), player2 : prompt("Team 1, second player:") },
team2 : { player1 : prompt("Team 2, first player: "), player2 : prompt("Team 2, second player:") },
}
function deal(bid){
console.log("The bid was " + bid);
game.hand = {"bid" : bid , "made" : undefined};
score();
}
所以我想做的事情,比这更好的是保持本届比赛的历史。我想以伪代码做这样的事情:
game.(hand + (hand.length+1))
或类似的东西;基本上自动增加对象内的某个对象。我不太确定阵列会在这里,但也许?我愿意接受建议/改进我的代码。
PS - 我更喜欢在javascript中执行此操作,而不是jQuery,Prototype,Dojo,MooTools ......或任何其他库。谢谢!
修改
对不起,让我澄清一下:玩3手左右后的结果就是这样一个对象:
var game = {
team1 : { player1 : prompt("Team 1, first player: "), player2 : prompt("Team 1, second player:") },
team2 : { player1 : prompt("Team 2, first player: "), player2 : prompt("Team 2, second player:") },
hand1 : { bid : 2 , made : 2 } ,
hand2 : { bid : 1 , made : 4 } ,
hand3 : { bid : 3 , made : 1 } ,
hand4 : { bid : 2 , //and made hasn't been set yet because we're mid-hand
}
答案 0 :(得分:3)
鉴于您的伪代码,您可以执行以下操作:
game[hand + (hand.length+1)]
即。 game["prop"] == game.prop
- 两者都提供对同一财产的访问权。
答案 1 :(得分:1)
老问题,我明白了,但我需要做类似的事情。我会答复,但我不允许。
执行此操作的最快方法似乎是像散列/关联数组一样访问对象。
var d = {};
var z = "hand";
d[z+1] = "foo";
console.log(d.hand1);
在萤火虫中测试一下。似乎工作得很好。 JS似乎没有一个php等同于强制解析变量,就像表达式周围的curley括号一样。
d->{z+1} = "foo"; // can't find anything like this in JS.
希望有所帮助,