2012-02-08 35 views
0

上午家伙数组内搜索一个值

IM目前使用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号一个realting卡号即王牌,7,9藏汉作为诉讼。

我然后检查它是否已经存在于数组中,如果没有添加它。但它目前不工作?它只是不承认重复的价值。

+0

首先修正你的括号。 – 2012-02-08 10:00:30

+0

用http://www.jslint.com/ – 2012-02-08 10:08:05

+0

验证您的代码您是否确定要比较循环中相同类型的值? '“12”!== 12' – 2012-02-08 10:11:03

回答

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"); 
    } 
} 
+0

Mhm所有你改变的是等号运算符。使用===根本不是一个坏主意,为什么要改变它呢? – Chris 2012-02-08 10:13:55

+0

@Chris你应该看到他是如何编辑他的问题之前... – ParPar 2012-02-08 10:28:03

+0

哦,我很抱歉!你能突出你改变了什么吗? – Chris 2012-02-08 11:24:05

0

使用数组来连续检查,如果事情是在那里是一个坏主意。你实际上想要使用的是一张地图。沿线的东西:

var used_cards = {}; 
function useCard(value, suit) { 
    var key = suit + '|' + value; 
    if (used_cards[key]) { 
    return false; 
    } 

    used_cards[key] = true; 
    return true; 
} 
1

但是,你的代码似乎为我工作。看看this jsfiddle。这似乎显示预期的输出:

exists = false 
1 and 2 added to array 
exists = false 
3 and 7 added to array 
0 
exists = true 

什么,你是他遇到的是,该功能目前不返回任何东西。所以你必须在你的函数结尾添加return exists;