我到处寻找这个,但似乎没有人在对象中使用关联数组。这是我的目标:
var player = {
Level: 1,
Stats: [{Defense : 5}, {Attack: 1}, {Luck: 3}]
};
我需要访问防御,攻击和运气的值,但是如何?
我试过这个,但它没有奏效:
player.Stats.Defense
player.Stats.Attack
player.Stats.Luck
有什么想法吗?谢谢!
P.S。我使用jQuery会有所不同吗?
答案 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