在数组内搜索值

时间:2012-02-08 09:58:16

标签: javascript

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以及诉讼。

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

3 个答案:

答案 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;
}