2017-11-27 3 views
0

私はリスト要素をクリックするとプッシュされる配列を持っています。 2つの要素がその中に入った後、私はそれらを互いに照合し、それらが全く同じかどうかを確認する方法が必要です。私は基本的なif(array[0] === array[1])を試しましたが、それは単にif array[0] = li.whateverarray[1] = li.notTheSameに関係なくtrue(一致します)を返します。javascriptで2つの配列要素が一致するかどうかを確認する方法はありますか?

var $card1 = $clicked[0]; 
var $card2 = $clicked[1]; 
function checkMatch(){ 
    if ($clicked.length === 2){ 
     if ($card1 === $card2){ 
      matched(); 
     }else { 
      $clicked.length = 0; 
      $('.card').removeClass('open show'); 
      console.log('NOT A MATCH!') 
     }; 
    }else{ 

    }; 
}; 
+0

'しかし、これは単にtrueを返します - この' array [0] 'と' array [1] 'などの正確な内容はどうですか? –

+0

このコードで何か問題はありません。エラーは他の場所にある必要があります。 –

+0

注意すべき点は、checkMatch関数の外に$ card1と$ card2を設定しています...コード匂いです。 –

答えて

0

あなたは2つの値を比較したいようです。 あなたのコードで説明した内容に基づいて、基本的な機能を作りました。これはあなたのために正しいですか?

var div = document.querySelector('div'); 
 
var cards = []; 
 

 
div.addEventListener('click', function(e){ 
 
    e.stopPropagation(); 
 
    e.target.style.background = 'green'; 
 
    cards.push(e.target.textContent); 
 
    checkMatch(); 
 
}); 
 

 
function checkMatch(){ 
 
    if(cards.length <= 1){ 
 
    return; 
 
    } 
 
    
 
    if(cards[0] === cards[1]){ 
 
    alert('Same'); 
 
    }else{ 
 
    alert('Different'); 
 
    } 
 
}
div{ 
 
    width:500px; 
 
} 
 
li{ 
 
    width: 100px; 
 
    height: 100px; 
 
    background: #E7F3F7; 
 
    list-style-type:none; 
 
    text-align: center; 
 
    display:inline-block; 
 
    margin:10px; 
 
}
<div> 
 
<li>Cat</li> 
 
<li>Cow</li> 
 
<li>Bird</li> 
 
<li>Bird</li> 
 
<li>Dog</li> 
 
<li>Cat</li> 
 
<li>Dog</li> 
 
<li>Cow</li> 
 
</div>

0

私が掲示別の質問から答えを見つけました。 基本的には:

let firstCard = array[0]; 
let secondCard = array[1]; 

そして、私はこれまでのカードをチェックしている "場合" に変更:

if(firstCard.children().attr('class') === secondCard.children().attr('class')){ 
"Do something" 
} 

そして、それは完璧に動作します。それはもうマッチとしてそれらをすべて見つけることはありません!

+0

を提供してください。代わりにdata- *属性を試してください – Martijn

+0

しかし、なぜですか?これは完全に動作します – Sparrky

+0

彼らはすべて1,2,3のクラスを持っていますし、一致要素は1-1と同じですので、誤検出はありません。 – Sparrky