2017-05-02 12 views
0

配列内に値が存在するかどうかを確認しようとしていますが、存在しない場合は自分の値をコンテナに追加したいのですが、1回追加するだけです。ループで1回だけ追加する方法

var getWords = $("#input").val(); 

if (getWords) 
{ 

    //this is my array 
var check_Key_Value = $(this).parent().parent(".main-rating-container").find(".key-words-style").map(function() 
     { 
      return $(this).text(); 
     }).get(); 

    for (var i = 0; i < check_Key_Value.length; i++) 
    { 
     if (check_Key_Value[i] != getWords) 
     { 
      //This is gonna append as many time as the length of my array how do i only append 1 time? 
      $(".container").append('<p class="key-words-style">'+getWords+'</p>'); 
     } 

    } 
} 

答えて

0

InArrayバリについてループ

var getWords = $("#input").val(); 

    if (getWords) 
    { 

     //this is my array 
    var check_Key_Value = $(this).parent().parent(".main-rating-container").find(".key-words-style").map(function() 
      { 
       return $(this).text(); 
      }).get(); 

     if($.inArray(getWords,check_Key_Value) == -1) 
    { 
    $(".container").append('<p class="key-words-style">'+getWords+'</p>'); 
    } 
    } 

詳細のためにするのではなく、InArrayバリ使用し、検索を反転することができます。値を探します。存在する場合は、停止して何もしないでください。見つからずに配列の最後に置くと、リストに追加されます。

var getWords = $("#input").val(); 

if (getWords) { 

    //this is my array 
    var check_Key_Value = $(this).parent().parent(".main-rating-container").find(".key-words-style").map(function() { 
    return $(this).text(); 
    }).get(); 

    // store whether we have found the value 
    var hasValue = false; 
    for (var i = 0; i < check_Key_Value.length; i++) { 
    if (check_Key_Value[i] == getWords) { 
     // value found, stop 
     hasValue = true; 
     break; 
    } 
    } 

    // if we didn't find it in the loop, add it 
    if(!hasValue) { 
     $(".container").append('<p class="key-words-style">' + getWords + '</p>'); 
    } 
} 

さらに簡単にするために、あなたは基本的にあなたのための検索を行いますどのindexOfまたはinArrayを使用することができます。

0

追加した後、次の行はreturn false; になるはずです。これにより、ループが再び実行されなくなります。

関連する問題