2014-12-10 34 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"; 
相关问题