动态地将成员添加到javascript对象

时间:2010-03-05 06:22:20

标签: javascript object

我正在研究合同桥的评分脚本,只是为了咯咯笑。我将游戏存储为对象:

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

}

2 个答案:

答案 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.

希望有所帮助,