[英]jQuery compare two arrays?
我有一个数组,我想创建另一个新数组,然后从HTML本身中提取值,然后比较两个值并输出匹配值。
我现有的数组进行比较:
var designersArrSelected = ["Von Blan","Foo Can","Diane con Fursternberg","BCBG MAX Azria"];
我的HTML
<ul id="seasonsDropDown">
<li data-season="FALL 2013 HAUTE COUTURE">FALL 2013 HAUTE COUTURE
<ul class="designers">
<li data-designer="Alexander Wang">Alexander Wang</li>
<li data-designer="BCBG MAX Azria">BCBG MAX Azria</li>
<li data-designer="Diane con Fursternberg">Diane con Fursternberg</li>
<li data-designer="Diane Von De">Diane Von De</li>
</ul>
</li>
</ul>
要从我使用的HTML中获取所有设计师的姓名:
var designersArrAll = [];
var i = 0;
$(".designers>li").each(function(){
designersArrAll[i++] = $(this).attr("data-designer");
});
根据我的示例,由于存在两个匹配项,因此结果应选择“ Diane con Fursternberg”和“ BCBG MAX Azria”,但是我应该如何比较两个数组的相同值?
尝试使用$.inArray
。 您可以在这里使用它:
var found = $.inArray('pattern', stringToBeSearched) > -1;
结果为数字,指示您的字符串在您要查找的模式中的何处开始。 -1
将使您知道stringToBeSearched中没有这样的模式。
如果您想使用老式的for循环方式,请在此处获取以下代码: 如何检查数组是否包含JavaScript中的对象? 。 如果每个条件内部都有条件,则可以在命中匹配时为元素设置样式。 可能不是最有效的,但它可以工作。
小提琴: http : //jsfiddle.net/LmQ9U/
var designersArrAll = [];
var designersArrSelected = ["Von Blan","Foo Can","Diane con Fursternberg","BCBG MAX Azria"];
var i = 0;
$(".designers>li").each(function(){
designersArrAll[i++] = $(this).attr("data-designer");
});
$(".designers>li").each(function(){
designer = $(this).attr("data-designer");
designersArrAll[i++] = designer;
if ( contains( designersArrSelected , designer) ) {
// do something here
$(this).css('background', 'yellow');
}
});
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
您可以执行此操作,而不必执行必须创建designersArrAll
数组的循环。
var designersArrAll = $.map( $('.designers > li'), function(el){
return $(el).data('designer');
});
至于比较两个数组,您可以在以下问题上使用代码: 如何知道两个数组是否具有相同的值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.