访问对象内的关联数组

时间:2013-12-30 04:14:54

标签: javascript jquery arrays oop associative-array

我到处寻找这个,但似乎没有人在对象中使用关联数组。这是我的目标:

var player = {
     Level: 1,
     Stats: [{Defense : 5}, {Attack: 1}, {Luck: 3}]
};

我需要访问防御,攻击和运气的值,但是如何?

我试过这个,但它没有奏效:

player.Stats.Defense
player.Stats.Attack
player.Stats.Luck

有什么想法吗?谢谢!

P.S。我使用jQuery会有所不同吗?

3 个答案:

答案 0 :(得分:4)

你说你控制了结构。如果是这样,请将其更改为:

var player = {
     Level: 1,
     Stats: {Defense : 5, Attack: 1, Luck: 3}
};

请注意,Stats现在是一个对象,而不是一个数组。然后,您可以按照您尝试的方式访问该信息,player.Stats.Defense等等。没有理由让Stats成为一系列不同的对象,这会让你的生活变得困难。

你使用了术语“关联数组”,这让我觉得你有PHP背景。该术语在JavaScript世界中并不常用,以避免与数组混淆。 “对象”,“地图”或“字典”是通常使用的术语,可能按顺序,都指向对象({})。可能是十分之九,如果你在PHP中使用一个关联数组,你可以在JavaScript中使用一个对象(除了在PHP中使用对象的同类事物)。 / p>

  

P.S。我使用jQuery会有所不同吗?

不,这是语言级而不是库级,但这是一个非常合理的问题。


(这是一个CW答案,因为它基本上就问题的所有评论都在说。)

答案 1 :(得分:2)

as Stats:[{Defense : 5}, {Attack: 1}, {Luck: 3}]是对象数组,您需要这样做:

player.Stats[0].Defense
player.Stats[1].Attack
player.Stats[2].Luck

答案 2 :(得分:0)

这里的player.Stats是一个对象数组。因此,您必须使用索引来访问这些对象。

var player = {
     Level: 1,
     Stats: [{Defense : 5}, {Attack: 1}, {Luck: 3}]
};

使用这些:

player.Stats[0].Defense
player.Stats[1].Attack
player.Stats[2].Luck