首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该如何从对象数组中存储和检索对象?(Javascript)

我应该如何从对象数组中存储和检索对象?(Javascript)
EN

Stack Overflow用户
提问于 2018-09-04 06:32:40
回答 3查看 123关注 0票数 1

想想基本的RPG游戏(我通过游戏化学得最好)……

请记住,游戏中的物品将以任何顺序随时被取出、使用和丢弃。所以我并不是想通过它们在数组中的数值位置来查找事物,而是严格地根据它们的对象变量名或其固有的属性值来查找和利用项。

我左右为难(a)将游戏项目作为字符串变量(如“poncho”)推入字符清单(对象中的数组),然后以某种方式将该字符串与实际项目(对象(如poncho))进行匹配,以访问和利用其属性/值(如character.inventory.poncho.value)……或者(b)将物品本身作为对象(如poncho)推入库存(数组),然后以某种方式在数组中访问它,以提取其值和属性(如名称:"Poncho")。

我手戳我的对象如下:

代码语言:javascript
复制
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
}

现在如果我将(游戏世界中的“get”)字符串推入清单中,

代码语言:javascript
复制
var character01 = {
    inventory [
        "Poncho",
        "Cigarillo",
        "Bullet"
    ]
}

然后,我可以很容易地访问它们以用于显示,因为它们是字符串。例如:

代码语言:javascript
复制
document.getElementById("inventory_display").innerHTML = "Inventory: " + character01.inventory;

但是我被困在如何从清单中的"Poncho“中提取像character01.inventory.poncho.value这样的东西。

如果我像这样将项目推入:

代码语言:javascript
复制
var character01 = {
    inventory [
        poncho,
        cigarillo,
        bullet
    ]
}

我被困在如何显示清单中的名字:“Poncho”上。我知道它在object对象中,但不确定如何提取。

..。

所以简而言之。我是否将对象推入数组,然后以某种方式提取它们的属性/值?或者将一个字符串(名称:"Poncho")推入数组,然后以某种方式向后解构这些数组,以获得它们的对象(poncho)及其值/属性?(见鬼的是将对象存储/放置到数组中,以便以后访问,甚至是正确的方法?)

除了方法之外,我对也很感兴趣。我想如果我能弄清楚这一点,我将能够开始布局更多的系统(也就是了解更多)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-22 04:10:34

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

票数 0
EN

Stack Overflow用户

发布于 2018-09-11 22:53:19

定义一个关联数组可能更好,其中键是显示名称("Poncho","Cigarillo"),值是您实际声明为变量的对象。

类似于:

代码语言:javascript
复制
var character01 = {
    inventory: {
        "Poncho" : {
            name: "Poncho",
            value: 3,
            use: function() {}
         },

        "Cigarillo" : {
        ...
        },

        "Bullet" : {
        ...
        }
    }
}

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

代码语言:javascript
复制
character1.inventory["Poncho"].value

你应该得到"3“。

票数 0
EN

Stack Overflow用户

发布于 2018-09-13 17:22:26

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

代码语言:javascript
复制
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() {}
            }
        ]
    }
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52156778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档