使用循环计数器如何动态创建对象并在命名对象时使用计数器

Using a loop counter how can I dynamically create objects and use the counter in naming the objects?

本文关键字:计数器 对象 创建对象 动态 循环 何动态      更新时间:2023-09-26

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

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

如何实现这一点?

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)

编辑:我似乎不是唯一一个想到字典的人,很抱歉重复了参考文献:将值附加到javascript字典

如何在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>