2012-02-08 37 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;