如何比较两个数组中的值以在中找到一个或多个匹配项?[jQuery]



我试图将一个输入值与两个段落进行比较,以检查两个段落中是否都存在输入值。所以,我在下面做了这个。但是代码运行不好:/。有人能解释一下怎么做吗?

<input type="text" class="input-text" name="billing_district" id="billing_district" placeholder="" value="">
<p class="regions">Dias Macedo, Itaperi, Passaré, Taquara, Serrinha</p>
<p class="regions">Dias Macedo, Dendê, Edson Queiroz, Taquara</p>
<p class="regions">Jereissati, Dendê, Forquilha, Centro, Taquara</p>

jQuery(function ($) {
var a = $('#billing_district').val().normalize('NFD').replace(/[u0300-u036f]/g, '').toLowerCase().split();
var b = $('.regions').text().normalize('NFD').replace(/[u0300-u036f]/g, '').toLowerCase().split(", ");
var index = $.grep(b, function (element, index) {
if ($.inArray(element, a) != -1) {
console.log(element);
}
});
});

这是有效的,尽管您没有指定代码应该查看逗号之间的整个术语。即使所有p中出现两个字母,该代码也会输出true。但是您可以添加一个额外的循环来检查拆分的字符串。

jQuery(function($) {
const $input = $('#billing_district');
const b = $('.regions');
$('#billing_district').on('keyup', function(){
let a = $input.val();
let count = 0
$.each(b, function(i, p) {
console.log($(p).text().replace(/s/g, ""),a);
if ($(p).text().replace(/s/g, "").includes(a)) {
count++;
}
});
let valueIsInAllParagraphs = (count == 3);
console.log(valueIsInAllParagraphs);    
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="input-text" name="billing_district" id="billing_district" placeholder="" value="">
<p class="regions">Dias Macedo, Itaperi, Passaré, Taquara, Serrinha</p>
<p class="regions">Dias Macedo, Dendê, Edson Queiroz, Taquara</p>
<p class="regions">Jereissati, Dendê, Forquilha, Centro, Taquara</p>

最新更新