我在对象定义中的对象不起作用

时间:2016-08-12 04:36:26

标签: javascript oop

以下是游戏对象的错误编码示例。游戏对象假设包含类似于玩家对象的数组。很明显这里的目的是什么,但到目前为止,我弄错了。 我试过换掉带括号的球员括号,或用冒号替换等号。

这里有什么问题?

var game = {
    gameName : 'Name of Game Instance',
    players : {
       player1  : {
         name:"Tom",
         score:0
       },
       player2  : {
         name:"Bob",
         score:0
       },
       player3  : {
         name:"Ziggy",
         score:0
       }
    }
 } 

4 个答案:

答案 0 :(得分:1)

我相信你希望players成为一个对象数组:

var game = {
    gameName : 'Name of Game Instance',
    players : [
       {
         name:"Tom",
         score:0
       },
       {
         name:"Bob",
         score:0
       },
       {
         name:"Ziggy",
         score:0
       }
    ]
};

答案 1 :(得分:0)

在您的代码中,game.players是一个对象,因此您没有数组方法,例如forEach.length

要使它成为数组,您不能简单地将{ ... }[ ... ]交换,因为数组不接受键值对,它们只接受值,而它们的键隐含地是它们的索引。为了能够访问每个播放器,您可以使数组成为对象数组,以便在game.players上进行数组操作,因为它们是数组。

var game = {
    gameName : 'Name of Game Instance',
    players : [
       {
         name:"Tom",
         score:0
       },
       {
         name:"Bob",
         score:0
       },
       {
         name:"Ziggy",
         score:0
       }
    ]
 } 

如果您希望将其保留为对象,可以将其键以数组形式写入以下内容:

Object.keys(game.players).forEach(function(key) {
   var currentPlayer = game.players[key]
})

答案 2 :(得分:0)

var game = {
gameName : 'Name of Game Instance',
players : [
    {
        name: "Tom",
        score: 0
    },
    {
        name: "Bob",
        score: 0
    },
    {
        name: "Ziggy",
        score: 0
    }
]
}

答案 3 :(得分:-1)

将玩家作为一系列对象。像这样:

var game = {
    gameName : 'Name of Game Instance',
    players : [
        {
            name: "Tom",
            score: 0
        },
        {
            name: "Bob",
            score: 0
        },
        {
            name: "Ziggy",
            score: 0
        }
    ]
}