我正在尝试使用循环计数器动态创建对象。 并希望在命名对象时使用计数器本身。最终的结果将是像这样的一系列球员:
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);
如何实现这一目标?
答案 0 :(得分: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)
答案 1 :(得分:0)
编辑:似乎我不是唯一一个想到字典的人,抱歉复制 参考文献: Append values to javascript dictionary
How to create dictionary and add key value pairs dynamically in Javascript
我建议使用字典,因为你可以根据字符串(比如&#39; p1&#39;)而不是仅使用int的索引(如0) 另外,我不熟悉&#34; Object.create()&#34;但是当玩家已经成为对象时,我认为没有必要。
这就是我所拥有的:
<!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>