2017-05-12 17 views
-2

が、私はこの配列を持って、私はelseステートメントがはるかにアイテム何度でも起こることを避けることができる方法がありFORループ内で複数回実行するelse文を避けますか?

   SoftwareBadges = 
      [ 
{ Title: "Playtech", Guid: "7e9", xPos: "96" }, 
{ Title: "BetSoft", Guid: "890", xPos: "169" }, 
{ Title: "WagerWorks", Guid: "35c", xPos: "242" }, 
{ Title: "Rival", Guid: "c35", xPos: "314" }, 
{ Title: "NetEnt", Guid: "59e", xPos: "387" }, 
{ Title: "MicroGaming", Guid: "19a", xPos: "460" }, 
{ Title: "Cayetano", Guid: "155", xPos: "533" }, 
{ Title: "OpenBet", Guid: "cfe", xPos: "607" }, 
{ Title: "RTG", Guid: "4e6", xPos: "680" }, 
{ Title: "Cryptologic", Guid: "05d", xPos: "753" }, 
{ Title: "CTXM", Guid: "51d", xPos: "827" }, 
{ Title: "Sheriff", Guid: "63e", xPos: "898" }, 
{ Title: "Vegas Tech", Guid: "a50", xPos: "975" }, 
{ Title: "Top Game", Guid: "0d0", xPos: "1048" }, 
{ Title: "Party Gaming", Guid: "46d", xPos: "1121" } 
      ]; 

      for (var s in SoftwareBadges) { 
       if (SoftwareBadges[s]["Guid"] == "7e9"){ 
        alert(SoftwareBadges[s]["Title"]); 
       } 
      else{alert('fdsfsdf');} 
      } 
+0

何を求めていますか? else文を一度実行させるには?配列に項目がある場合と同じようにelse文を何度も実行させる方法はありますか? –

+2

まず、配列に対して 'for-in'を使わないでください。第二に、私はそれがあなたが言っていることなら、毎回他人がどのように動くかは見ません。実行されない1つの反復があります。 –

+0

Guidが一致していないバッジが見つかったらどうしますか?リストの残りの部分のチェックを止めたいのですか?それとももっと一致するGuidsを確認したいのですが、 'fdsfsdf'に一度だけ警告するだけですか? –

答えて

1

利用Array.find()配列です。コールバックの条件を満たす最初の要素を返し、残りの要素を反復処理しなくなります。

SoftwareBadges = 
 
      [ 
 
{ Title: "Playtech", Guid: "7e9", xPos: "96" }, 
 
{ Title: "BetSoft", Guid: "890", xPos: "169" }, 
 
{ Title: "WagerWorks", Guid: "35c", xPos: "242" }, 
 
{ Title: "Rival", Guid: "c35", xPos: "314" }, 
 
{ Title: "NetEnt", Guid: "59e", xPos: "387" }, 
 
{ Title: "MicroGaming", Guid: "19a", xPos: "460" }, 
 
{ Title: "Cayetano", Guid: "155", xPos: "533" }, 
 
{ Title: "OpenBet", Guid: "cfe", xPos: "607" }, 
 
{ Title: "RTG", Guid: "4e6", xPos: "680" }, 
 
{ Title: "Cryptologic", Guid: "05d", xPos: "753" }, 
 
{ Title: "CTXM", Guid: "51d", xPos: "827" }, 
 
{ Title: "Sheriff", Guid: "63e", xPos: "898" }, 
 
{ Title: "Vegas Tech", Guid: "a50", xPos: "975" }, 
 
{ Title: "Top Game", Guid: "0d0", xPos: "1048" }, 
 
{ Title: "Party Gaming", Guid: "46d", xPos: "1121" } 
 
      ]; 
 
      
 
let foundBadge = SoftwareBadges.find(badge => badge.Guid === '7e9'); 
 

 
console.log(foundBadge ? foundBadge : 'asdfads');

+0

私は残念なことに最新のものをサポートしていないチタニウムを使用していますJSそれ以外の場合は完全です –

+0

'Array.prototype.find'はポリフェイルすることができます:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find?v=example –

+0

素晴らしい、それは多角形のコードを追加することによって働いた –

0

私は、あなたが一度だけアラートを送信することを推測しているが、それというのですか?これを行うには、次のような別の変数が必要です。

SoftwareBadges = 
[ 
{ Title: "Playtech", Guid: "7e9", xPos: "96" }, 
{ Title: "BetSoft", Guid: "890", xPos: "169" }, 
{ Title: "WagerWorks", Guid: "35c", xPos: "242" }, 
{ Title: "Rival", Guid: "c35", xPos: "314" }, 
{ Title: "NetEnt", Guid: "59e", xPos: "387" }, 
{ Title: "MicroGaming", Guid: "19a", xPos: "460" }, 
{ Title: "Cayetano", Guid: "155", xPos: "533" }, 
{ Title: "OpenBet", Guid: "cfe", xPos: "607" }, 
{ Title: "RTG", Guid: "4e6", xPos: "680" }, 
{ Title: "Cryptologic", Guid: "05d", xPos: "753" }, 
{ Title: "CTXM", Guid: "51d", xPos: "827" }, 
{ Title: "Sheriff", Guid: "63e", xPos: "898" }, 
{ Title: "Vegas Tech", Guid: "a50", xPos: "975" }, 
{ Title: "Top Game", Guid: "0d0", xPos: "1048" }, 
{ Title: "Party Gaming", Guid: "46d", xPos: "1121" } 
]; 

var enteredInElse = false; 

for (var s in SoftwareBadges) { 
    if (SoftwareBadges[s]["Guid"] == "7e9"){ 
     alert(SoftwareBadges[s]["Title"]); 
    } else{ enteredInElse = true } 
} 
if(enteredInElse){ 
    alert('fdsfsdf'); 
} 
+0

はい、私は一度だけ実行するelse文をしたいと思います –

+0

配列がオブジェクトを持っている場合、それはForLoopのIf文とELSE文の両方を実行し、 if文はforloop.ifで条件が満たされている場合にのみ実行され、condit forloop.ifで実行されません。 –

+0

私が何をしても、文が真であれば、IF文とElse文の両方を実行します –

関連する問題