代码之家  ›  专栏  ›  技术社区  ›  Alex Mcp

向javascript对象动态添加成员

  •  0
  • Alex Mcp  · 技术社区  · 16 年前

    我正在为合同桥牌准备一个计分脚本,只是为了好玩。我将游戏存储为一个对象:

    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))
    

    或者类似的东西;基本上自动增加一个对象中的某个对象。我不太确定数组会在这里出现,但也许?我愿意接受建议/改进我的代码。

    我更喜欢用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 回复  |  直到 16 年前
        1
  •  3
  •   Alex Gyoshev    16 年前

    给定伪代码,可以执行以下操作:

     game[hand + (hand.length+1)]
    

    即 game["prop"] == game.prop

        2
  •  1
  •   user445658    14 年前

    老问题,我明白了,但我也需要做类似的事情。我想投赞成票,但我不被允许。

    var d = {};
    var z = "hand";
    d[z+1] = "foo";
    
    console.log(d.hand1);
    

    在firebug中测试一下。看起来效果不错。

    d->{z+1} = "foo";  // can't find anything like this in JS.
    

    希望有帮助,