我正在尝试检查数组中是否存在值,如果它不存在,那么我想将我的值附加到我的容器中,但我只希望它追加一次。
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 :(得分: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>');
}
}
为了进一步简化,您可以使用基本上可以搜索的indexOf
或inArray
。
答案 2 :(得分:0)
追加后,下一行应为return false;
这将打破循环再次运行。