我应该如何存储然后从对象数组中检索对象? (JavaScript)

时间:2018-09-03 22:32:40

标签: javascript

思考基本的RPG游戏(我通过游戏化学习得最好)...

时刻牢记游戏中的物品会以任何顺序被拿走,使用和放下……所以我不是在通过它们在数组中的数字位置找到事物之后,严格来说是在根据对象找到并利用物品之后变量名称或其固有属性值之一。

在(a)将游戏项目作为字符串变量(例如“雨披”)推入角色清单(对象内部的数组),然后以某种方式匹配该字符串之间,我感到十分痛苦备份实际项目(对象(例如雨披))以访问并利用其属性/值(例如character.inventory.poncho.value)...或(b)将项目作为对象本身(例如雨披)推入库存(阵列),然后以某种方式在阵列中对其进行访问以提取其值和属性(例如名称:“雨披”)。

我像这样对我的物体进行手工标记:

var poncho = {
    name: "Poncho",
    value: 3,
    use: function() {}; //do somethin
}

var cigarillo = {
    name: "Cigarillo",
    value: 2,
    use: function() {}; //do somethin
}

var bullet = {
    name: "Bullet",
    value: 1,
    use: function() {}; //do somethin
}

现在,如果我这样将(在游戏世界中“获取”)字符串推入库存,

var character01 = {
    inventory [
        "Poncho",
        "Cigarillo",
        "Bullet"
    ]
}

然后,由于它们是字符串,因此我可以轻松访问它们以用于显示。例如:

document.getElementById("inventory_display").innerHTML = "Inventory: " + character01.inventory;

但我仍然坚持如何从清单中的“雨披”中提取诸如character01.inventory.poncho.value之类的东西。

如果我也这样推项目:

var character01 = {
    inventory [
        poncho,
        cigarillo,
        bullet
    ]
}

我在如何显示清单中的名称“雨披”上感到困惑。我知道它在[object Object]内部,但不确定如何提取。

...

因此,简而言之...我是否将对象放入数组,然后以某种方式提取其属性/值?还是将字符串(名称:“ Poncho”)推入数组,然后以某种方式向后解构这些对象,以获取其对象(雨披)及其值/属性? (哎呀是将对象存储/放入一个数组中,以便以后甚至可以使用正确的方法进行访问吗?)

除方法外,我对不知何故感兴趣。我想,如果我能解决这个问题,我将能够开始设计更多的系统(又称为“了解更多”)。

3 个答案:

答案 0 :(得分:0)

最好定义一个关联数组,其中键是显示名称(“雨披”,“ Cigarillo”),而值是您实际声明为变量的对象。

类似的东西:

var character01 = {
    inventory: {
        "Poncho" : {
            name: "Poncho",
            value: 3,
            use: function() {}
         },

        "Cigarillo" : {
        ...
        },

        "Bullet" : {
        ...
        }
    }
}

允许您访问所有内容,例如:

character1.inventory["Poncho"].value

您应该得到“ 3”。

答案 1 :(得分:0)

您可以更改上面的代码以使用相同对象的数组。例如:

var character01 = {
    inventory: {
        "Gun" : [
            {
                name: "Gun",
                value: 1,
                use: function() {}
            },
            {
                name: "Gun",
                value: 0,
                use: function() {}
            },        
            {
                name: "Gun",
                value: 3,
                use: function() {}
            }
        ],

        "Poncho" : [
            {
                name: "Poncho",
                value: 1,
                use: function() {}
            },
            {
                name: "Poncho",
                value: 2,
                use: function() {}
            },        
            {
                name: "Poncho",
                value: 3,
                use: function() {}
            }
        ]
    }
}

当然要引用项目,您可以扫描数组或直接通过变量引用它们。

答案 2 :(得分:0)

This方法或多或少解决了我所有的问题(以及以后的一些问题):