我有以下的數據對象,並最終會有內entities
更多類似的:搜索JSON值多層次深
function loadCardLibrary() {
var cardLibrary = {
entities: [
{
name: "Spareparts",
values: {
sickness: 0,
attack: 0,
scrap: 3,
manaCost: 0
},
apply: [
applyCreature("Mech"),
applyHealth(1),
applyNoAttack(true)
]
}
]
};
return cardLibrary;
}
我試圖寫一個函數(見本example)來搜索name
值,然後再在該對象和搜索,檢查是否有特定apply
值,就像這樣:
function checkHasNoAttack(entityName) {
for (var entity in cardLibrary.entities) {
if (cardLibrary.entities[entity].name === entityName) {
// for debugging
console.log(cardLibrary.entities[entity]);
console.log(); // blank line
for (var applied in cardLibrary.entities[entity].apply) {
if (cardLibrary.entities[entity].apply[applied].applyNoAttack === true) {
console.log(entityName + " cannot attack.");
} else {
console.log("test");
break;
}
}
}
}
}
當我後立即調用它,就像這樣:
var canItAttack = checkHasNoAttack("Spareparts");
...這就是結果:
{
name: 'Spareparts',
values: {
sickness: 0,
attack: 0,
scrap: 3,
manaCost: 0
},
apply: [ 'Mech', 1, true ]
}
test
代替test
它來源於else
,我試圖登錄的得到它響應第一if
聲明,並記錄:
備件無法攻擊。
的理解是更復雜的邏輯最終將取代console.log
那裏我真的需要這個工作,但一直與它修修補補,我只是似乎無法得到它的權利。任何幫助非常感謝!
是不是你的'應用'數組? 'cardLibrary.entities [entity] .apply [applied] .applyNoAttack'很可能是'undefined'。 – Passerby
我想這可能是,我錯過了什麼?它確實得到了一些「未定義」的錯誤,寫得有點不同。你能找到解決方法嗎?我提供了一個鏈接來運行代碼,如果你知道一個解決方法,請發表一個答案! – Phrancis
我想你可能想改變你的'申請'到'apply:{applyCreature:applyCreature(「Mech」),applyHealth:applyHealth(1),applyNoAttack:applyNoAttack(true)}' – Passerby