如何只用循环附加一次

时间:2017-05-02 20:35:51

标签: jquery html

我正在尝试检查数组中是否存在值,如果它不存在,那么我想将我的值附加到我的容器中,但我只希望它追加一次。

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>');
        }

    }
}

3 个答案:

答案 0 :(得分:1)

您可以使用inArray而不是for循环

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的更多信息https://api.jquery.com/jQuery.inArray/

答案 1 :(得分:0)

反转搜索。寻找价值。如果存在,请停止并不执行任何其他操作。如果将其设置到数组末尾而未找到它,请将其附加到列表中。

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>');
  }
}

为了进一步简化,您可以使用基本上可以搜索的indexOfinArray

答案 2 :(得分:0)

追加后,下一行应为return false; 这将打破循环再次运行。