[英]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.