【问题标题】:Using a loop counter how can I dynamically create objects and use the counter in naming the objects?使用循环计数器如何动态创建对象并使用计数器命名对象?
【发布时间】:2016-12-04 17:19:02
【问题描述】:

我正在尝试使用循环计数器动态创建对象。 并希望在命名对象时使用计数器本身。最终结果将是这样的一组玩家:

players = [
    p1: {
        //some data like age, score etc.
    },
    p2: {
        //some data like age, score etc.
    },
    p3: {
        //some data like age, score etc.
    }
]

但我下面的简单代码不起作用。

var numPlayers = 3;
var p;

var player = {
    rollDice : function(){
        console.log('i am rolling the dice');
        },
    age: function(){
        console.log("My name is " + this.age);
       },
    score:0
  }

for(i=0;i<numPlayers;i++){
    var p + i = Object.create(player);
    console.log('player ' + p + i + " created!");
    }

问题出在这一行:

var p + i = Object.create(player);

我尝试了各种方法让它像这样工作

var 'p' + i = Object.create(player);

如何做到这一点?

【问题讨论】:

  • 您正在寻找数组的奇迹。
  • 好的,现在试试,谢谢
  • @Boaz:不;只需使用一个数字(并使其从零开始)。

标签: javascript


【解决方案1】:
var players = {}

for(var i=0; i<numPlayers; i++){
  players['p' + i] = Object.create(player);
  console.log('player ' + ('p' + i) + " created!");
}

// var p; <-- not necessary

现在你有一个关联的玩家数组。如果你这样做,你会看到这个列表的所有键:

Object.keys(players)

【讨论】:

    【解决方案2】:

    编辑:看来我不是唯一一个想到字典的人,抱歉重复 参考: Append values to javascript dictionary

    How to create dictionary and add key value pairs dynamically in Javascript

    我会推荐一本字典,因为您可以基于字符串(如 'p1' )而不是仅使用 int 索引(如 0)来引用 此外,我不熟悉“Object.create()”,但我认为当玩家已经是一个对象时没有必要。

    这是我所拥有的:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <style>
        </style>
        <title>Something</title>
    </head>
    <body>
    
    </body>
    
    <script>
    
    new player={}
    
    var numPlayers = 3;
    var oneplayer={
        rollDice : function(){
            console.log('i am rolling the dice');
            },
        age: function(){
            console.log("My name is " + this.age);
           },
        score:0
    }
    var count =1
    
    
    
    function dictionary(numPlayers){
        tempkey='p'+count
        player.push({key: , value: oneplayer})
        count=count+1
    }
    
    </script>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      相关资源
      最近更新 更多