[英]How should I approach storing and then retrieving objects from an object array? (Javascript)
想想基本的RPG游戏(我通过游戏化学习得最好)...
请记住,游戏物品将始终以任何顺序被使用,使用和丢弃...因此,我并不是在根据它们在对象变量名称或根据物品变量名称找到并利用物品之后才通过数组中的数字位置查找事物。它的固有属性值之一。
我感到两难之间(a)将游戏项目作为字符串变量(例如“雨披”)推入角色清单(对象内部的数组),然后以某种方式将字符串与实际项目(对象(例如雨披))来访问和利用其属性/值(例如character.inventory.poncho.value)...或(b)将物品作为对象本身(例如雨披)推入库存(数组)中,然后以某种方式对其进行访问在数组中提取其值和属性(如名称:“ Poncho”)。
我像这样手动标记我的对象:
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”)放入清单中,
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”)推入数组,然后以某种方式解构这些对象以返回其对象(雨披)及其值/属性? (哎呀是将对象存储/放入数组中,以便以后甚至可以使用正确的方法来访问吗?)
除了方法,我对某种方式也很感兴趣。 我想,如果我能解决这个问题,我将能够开始设计更多的系统(又称为“了解更多”)。
最好定义一个关联数组,其中键是显示名称(“雨披”,“ Cigarillo”),而值是您实际声明为变量的对象。
就像是:
var character01 = {
inventory: {
"Poncho" : {
name: "Poncho",
value: 3,
use: function() {}
},
"Cigarillo" : {
...
},
"Bullet" : {
...
}
}
}
允许您访问所有内容,例如:
character1.inventory["Poncho"].value
您应该得到“ 3”。
您可以更改上面的代码以使用相同对象的数组。 例如:
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() {}
}
]
}
}
当然要引用项目,您可以扫描数组或直接通过变量引用它们。
这种方法或多或少地解决了我所有的问题(以及将来的一些问题):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.