2014-12-10 37 views
0

我有一個對象,它包含所有白色棋子和一個容納所有黑色棋子的對象。現在即時通訊編寫一個if語句來檢查im函數是否都是相同的顏色。通過它的一個屬性找到對象的名稱

爲對象的代碼是:

var whiteFgrs = {King:"&#9812", Queen:"&#9813", Fortress:"&#9814", Bishop:"&#9815", Knight:"&#9816", Peasant:"&#9817"}; 
var blackFgrs = {King:"&#9818", Queen:"&#9819", Fortress:"&#9820", Bishop:"&#9821", Knight:"&#9822", Peasant:"&#9823"}; 

以及存儲所選擇的位置的值的代碼:

var value1=document.getElementById(elemId1).lastChild.nodeValue; 
var value2=document.getElementById(element.id).lastChild.nodeValue; 

這將返回件(例如 「&#9817」。)。如何檢查此代碼是否是whiteFgrs或blackFgrs的一部分?

+2

迭代對象以查看它是否包含該部分。 – Mathletics 2014-12-10 21:26:02

+0

最簡單的方法是循環'whiteFgrs'和'blackFgrs'來查看哪一個包含它。 – 2014-12-10 21:26:29

+2

好吧,你可以遍歷鍵/值來找出哪一個包含該值,但可能有更好的方法,例如使用內部對象,然後更新dom以反映而不是其他方式。 – 2014-12-10 21:26:52

回答

1

嗯,你可以看看它:

var colorValue = "&#9817"; 
for (var piece in whiteFgrs) { 
    if (whiteFgs[piece] == colorValue) { 
     //found it! 
    } 
} 

//If not found in white figures, check black figures. 
1

迭代和檢查:

var index = Object.keys(whiteFgrs).reduce(function(idx, name){idx[whiteFgrs[name]]=name;return idx;},{}); 

index['&#9817']; // === 'Peasant' 
0

如果你需要經常做這種檢查,你也可以更快的查找如創建索引像其他人所建議的物體一樣,但有一個更簡單的方法來確定一塊是黑色還是白色:

value < "&#9818" ? "white" : "black"; 
// or rather, as `nodeValue` gives you the plain text without html entities: 
value < "\u265a" ? "white" : "black"; 
相關問題