2017-05-28 2 views
0

私は、この機能の実行を予測する条件があります。しかしそれはうまくいかないでしょう。"または"条件が機能しないJavaScript

if ((event.keyCode !== 40) || (event.keyCode !== 38)) { 
     self.inputVal = input.value; 
     var result = pokemonNames.filter(function(pokemon) { 
      return pokemon.includes(self.inputVal.toLowerCase()); 
     }); 
     if (result.length > 5) { 
      result = result.filter(function(pokemon, index) { 
      return index < 5; 
      }); 
     } 

私はそれが正常に動作しますが、私は(event.keyCode !== 40) || (event.keyCode !== 38)を使用する場合、それがうまくいくだけevent.keyCode !== 40を使用しています。

+3

これはあなたのロジックが壊れている、それは常に2つのコードのいずれかとは異なるでしょう。あなたの条件は「真」に単純化されます。あなたは '(k!= x)&&(k!= y)'か '(k == x)|| (k == y) 'である。 – Aaron

+0

あなたは何を正確に達成しようとしていますか? – VlassisFo

+0

||の代わりに&&を使用してください。 – Morleee

答えて

1

event.keyCodeが40または38でない場合は、もしブロックを実行したい場合は、希望この

((event.keyCode !== 40) && (event.keyCode !== 38)) 

あなたはevent.keyCodeが40または38

であれば、コードを実行する場合
((event.keyCode == 40) || (event.keyCode == 38)) 
+1

私の答えをdownvoteするつもりなら、少なくとも私に理由を教えてください –

0

コメントでAaronが指摘したように、常にtrueと解決されます。数値が40の場合、2番目の条件は真(38ではないため)であり、その逆もあります。代わりに&&を使用すれば正常に動作します。

関連する問題