This question already has answers here:
how to access object property using variable [duplicate]
                            
                                (2个答案)
                            
                    
                3年前关闭。
        

    

所以我有一个很大的数组,像这样:

var enemy = {
    'level1' : {
        creature :
        {
            creature_name : {
                 'Goblin' : {
                    info: {
                        'c_name' : 'Goblin',
                        'HP' : '20',
                        'damage' : '3',
                        'loot' : [
                            {name: 'a wooden sword'   , item: 'weapon'  , value: 2},
                            {name: 'a golden necklace', item: 'amulet' , value: 1},
                            {name: 'a pair of boots'  , item: 'boots'  , value: 1},
                            {name: 'some cloth legs'  , item: 'legs'  , value: 3},
                            {name: 'a cloth helmet'  , item: 'helm'  , value: 2}
                        ]
                    }
                 },
                 'Cow' : {
                    info: {
                        'c_name' : 'Cow',
                        'HP' : '10',
                        'damage' : '1',
                        'loot' : [
                            {name: 'a wooden sword'   , item: 'weapon'  , value: 2},
                            {name: 'a golden necklace', item: 'amulet' , value: 1},
                            {name: 'a pair of boots'  , item: 'boots'  , value: 1},
                            {name: 'a cloth helmet'  , item: 'helm'  , value: 2}
                        ]
                    }
                 },
                 'dragon' : {
                    info: {
                        'c_name' : 'Cow',
                        'HP' : '300',
                        'damage' : '300',
                        'loot' : [
                            {name: 'an almighty dragon sword'   , item: 'weapon'  , value: 200},
                            {name: 'a dragon tooth', item: 'amulet' , value: 30},
                            {name: 'a pair of dragon boots'  , item: 'boots'  , value: 60},
                            {name: 'a dragon helmet'  , item: 'helm'  , value: 60}
                        ]
                    }
                 },

            }

        },
    },
    'level2' : {
        'skelleton' : {
            'HP' : '40',
            'damage' : '5',
            'loot' : [
                {name: 'a bone'   , item: 'weapon'  , value: 1},
                {name: 'a warriors helmet'   , item: 'helm'  , value: 4}
            ]
        }
    }

};


当我选择想要的生物时,我需要这样称呼它:

enemy.level1.creature.creature_name.dragon.info.c_name

现在,我希望能够通过input box或类似的方式选择一个敌人。
但是我不知道如何在enemy.level1.creature.creature_name.dragon.info.c_name中插入该值

我尝试使用enemy.level1.creature.creature_name.+ input_value + .info.c_name

但这似乎不起作用。必须是一个简单的解决方案吗?

最佳答案

您拥有的是对象而不是数组。您可以通过多种方式设置对象属性。一种方式是:

var myObj = {
  foo: {
    value : "foo"
  },
  bar: {
    value: "bar"
  }
}

myObj["foo"] = "123";


在您的情况下,您的对象更大,但过程相同:

enemy.level1.creature.creature_name[input_value].info.c_name = "whatever name";


输入值是生物名称的有效属性之一,即“ dragon”:

enemy.level1.creature.creature_name["dragon"].info.c_name = "whatever name"

09-19 14:00