Morning Guys
我目前正在使用javascript并正在创建一个简单的黑色杰克游戏,我想跟踪已经从包中拉出的卡片。继承我的职能
function usedCards(value,suit)
{
var exists = false;
for(i = 0; i< usedCardNo.length;i++)
{
if (value === usedCardNo[i] && suit === usedCardSuit[i])
{
exists = true;
console.log(i);
}
}
console.log("exists = " + exists);
if (exists===false)
{
usedCardNo.push(value);
usedCardSuit.push(suit);
console.log(value + " and " + suit +" added to array");
}
}
我将功能2的id号码传递给卡号,即ace,7,9以及诉讼。
然后我检查它是否已经存在于数组中,如果没有添加它。但它目前没有工作?它只是不识别重复值。答案 0 :(得分:1)
但是你的代码似乎对我有用。看看this jsfiddle。它似乎显示了预期的输出:
exists = false
1 and 2 added to array
exists = false
3 and 7 added to array
0
exists = true
您可能遇到的是该功能现在没有返回任何内容。因此,您必须在函数末尾添加return exists;
。
答案 1 :(得分:0)
你应该解决几件事:
function usedCards(value,suit){
var exists = false;
for(i = 0; i< usedCardNo.length;i++){
if (value == usedCardNo[i] && suit == usedCardSuit[i]){
exists = true;
console.log(i);
}
}
console.log("exists = " + exists);
if (exists==false){
usedCardNo.push(value);
usedCardSuit.push(suit);
console.log(value + " and " + suit +" added to array");
}
}
答案 2 :(得分:0)
使用数组来连续检查是否存在某些内容是个坏主意。你真正想要使用的是地图。有点像:
var used_cards = {};
function useCard(value, suit) {
var key = suit + '|' + value;
if (used_cards[key]) {
return false;
}
used_cards[key] = true;
return true;
}