[英]How to match values of 2 array in Jquery /Js
如果list2的值等于list1的值,我有2个列表,那么我想向HTML选项中添加一个具有匹配值的类。
// var list1 = $('select#workers option').toArray().map(item => item.value); list1 = ["19", "78", "73", "26", "79", "93", "63", "70", "82", "60", "42", "90", "91", "84", "92", "64", "1", "83", "85", "61", "21", "45"]; list2= ["93", "78", "91", "60", "83", "90", "84", "79", "82", "42"]; $.each(list1, function( index, value ) { var list1val = value; $.each(list2, function( index, value ) { var list2val = value; if(list1val==list2val){ // $('select#workers option').addClass('green'); console.log('Add class'); } else{ $('select#workers option').addClass('red'); } }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select class="form-control" id="workers" multiple="" size="5"> <option value="19">Administration</option> <option value="78">Alan </option> <option value="73">Allister </option> <option value="26">Andrew </option> <option value="79">Chris </option> <option value="93">Clayton </option> <option value="63">Dale Morcom</option> <option value="70">David </option> <option value="82">Dean </option> <option value="60">Deano </option> <option value="42">Drew </option> <option value="90">Gabriel </option> <option value="91"> Grant</option> <option value="84">Jeremy Beeston</option> <option value="92"> Rolfe</option> <option value="64"> Johnson</option> <option value="1">Luke </option> <option value="83">Matt </option> <option value="85">Michelle </option> <option value="61">Playsafe</option> <option value="21">Squizzy </option> <option value="45">Stuart </option> </select>
我想将一个类添加到具有列表2中匹配值的选项。
但是$('select#workers option').addClass('green');
正在将类添加到所有选项。
使用属性选择器:
$("select#workers option[value='" + list1val + "']").addClass("green");
尝试根据属性value
添加类。
list1 = ["19", "78", "73", "26", "79", "93", "63", "70", "82", "60", "42", "90", "91", "84", "92", "64", "1", "83", "85", "61", "21", "45"]; list2= ["93", "78", "91", "60", "83", "90", "84", "79", "82", "42"]; $.each(list1, function( index, value ) { var list1val = value; $.each(list2, function( index, value ) { var list2val = value; if(list1val==list2val){ $('select#workers option[value = '+list2val+']').addClass('green'); console.log('Add class'); } else{ $('select#workers option[value = '+list2val+']').addClass('red'); } }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select class="form-control" id="workers" multiple="" size="5"> <option value="19">Administration</option> <option value="78">Alan </option> <option value="73">Allister </option> <option value="26">Andrew </option> <option value="79">Chris </option> <option value="93">Clayton </option> <option value="63">Dale Morcom</option> <option value="70">David </option> <option value="82">Dean </option> <option value="60">Deano </option> <option value="42">Drew </option> <option value="90">Gabriel </option> <option value="91"> Grant</option> <option value="84">Jeremy Beeston</option> <option value="92"> Rolfe</option> <option value="64"> Johnson</option> <option value="1">Luke </option> <option value="83">Matt </option> <option value="85">Michelle </option> <option value="61">Playsafe</option> <option value="21">Squizzy </option> <option value="45">Stuart </option> </select>
尝试首先使用O(n + m)时间复杂度而不是嵌套循环O(n ^ 2)获取匹配列表
var list1 = ["19", "78", "73", "26", "79", "93", "63", "70", "82", "60", "42", "90", "91", "84", "92", "64", "1", "83", "85", "61", "21", "45"];
var list2= ["93", "78", "91", "60", "83", "90", "84", "79", "82", "42"];
var mapList1 = {};
list1.forEach(function(value) {
mapList1[value] = true;
});
var matches = [];
list2.forEach(function(value) {
if (mapList1[value]) {
matches.push(value);
}
});
console.log(matches)
然后,您可以通过添加课程来使用匹配项来突出显示
尝试这个
list1 = ["19", "78", "73", "26", "79", "93", "63", "70", "82", "60", "42", "90", "91", "84", "92", "64", "1", "83", "85", "61", "21", "45"];
list2= ["93", "78", "91", "60", "83", "90", "84", "79", "82", "42"];
var found = list1.find(function(element) {
for(var i = list2.length; i--;) {
if(list2[i] === element)
console.log(true);
}
console.log(false);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.