考虑我里面有这个无序列表和隐藏的列表项。 { on jsFiddle }

<ul>
<li class="brand pro size color">one</li>
<li class="brand pro color">two</li>
<li class="brand pro size color">three</li>
<li class="pro size color">four</li>
<li class="brand pro size color">five</li>
<li class="pro color">six</li>
<li class="brand pro size color">seven</li>
<li class="brand pro size color">eight</li>
<li class="brand size color">nine</li>
<li class="brand pro color">ten</li>
</ul>

我有四个数组:

    var myBrand = $("ul li.brand");
var myPro = $("ul li.pro");
var mySize = $("ul li.size");
var myColor = $("ul li.color");

我希望在名为mySelected的新数组中具有“相同对象”。

我已经为两个数组完成了这样的工作:

var mySelected = myBrand.filter(function() {
return $.inArray(this, myPro) > -1;
});
mySelected.show();

我想知道如何对“四个”或更多数组进行处理?

===============>>#1 票数:3 已采纳

您将不得不遍历它们。 随着EcmaScript的5是every你可以:

var mySelected = myBrand.filter(function() {
    var li = this;
    return [myPro, mySize, myColor].every( function(array) {
        return $.inArray(li, array) > -1;
    });
});

编辑:根据jQuery的api ,filter方法也将jQuery集作为参数。 所以下面的人也应该工作:

var mySelected = myBrand;
var setsToBeMatched = [myPro, mySize, myColor];
for (var i=0; i<setsToBeMatched.length; i++)
    mySelected = mySelected.filter(setsToBeMatched[i]);

===============>>#2 票数:1

如果要选择具有所有四个类的所有<li>元素,则可以使用选择器并立即选择它们:

var mySelected = $('ul li.brand.pro.size.color');

这是一个演示: http : //jsfiddle.net/btk7r/1/

更新

如果您有一系列的类,则可以使其更加动态:

var class_arr  = ['brand', 'pro', 'size', 'color', 'length', 'width'],
    mySelected = $('ul li.' + class_arr.join('.'));

  ask by Imran translate from so

未解决问题?本站智能推荐:

4回复

从给定数组创建一个新数组,并获得不同的属性作为子对象/数组

我有多个ID但答案不同的Responses数组。 我想创建一个具有Id,Name和一个Question对象的数组,该对象将具有带有答案的Question ID。 我尝试了不同的方法,但这对我没有用。 如果您能在这里帮助我,那就太好了。 谢谢你。
7回复

使用另一个对象数组过滤对象数组

这个问题类似于这个带有循环的对象的Jquery过滤器数组,但这次我需要用一个对象数组来做过滤器。 例: 我有一个这样的对象数组: 我想用这样的数组过滤它: 并返回此(myFilter中的userid和projectid需要匹配myArray中的userid和proje
1回复

过滤一个javascript数组对象

我将json文件加载到带有jQuery的javascript对象中。 我得到一个数组对象(每一行都是一个json对象)。 目前,我将JavaScript对象的内容显示到html表中,且对象的每一行都带有for。 是否可以根据列条件直接过滤我的javascript数组对象,而不必再次使用for命令
3回复

如果一个键相同,则创建新的对象数组,然后添加这些对象的其他键值

我想根据一个键过滤掉我的对象数组。 如果该键在其他对象中相同,则将添加对象的第二个值。 我有一个像下面的对象数组: 输入: 输出: Mike和Edison重复两次,因此为这些对象添加了_amount键的值。 它对我来说有点困惑。 请帮帮我。 谢谢!
2回复

过滤JavaScript中的对象数组

我想按属性值过滤JavaScript对象。 这是一个场景: 下面的数组是我正在使用的一个小例子 在我的应用程序中,有两个下拉字段,这些字段可让用户选择几个星期。 我正在按“日期”计算星期数,并将“ WeekNo”作为属性插入。 我想使用WeekNo根据起始端值获取数据块。
3回复

更新数组中的过滤对象

我有一个对象数组。 我想过滤它们,然后对过滤后的对象进行处理。 到目前为止,这是我的尝试。 职位对象 功能
3回复

从数组创建多维对象,从该数组分配一个值作为新对象中的键

我有一个像这样的数组(每个包含两个以上的键值对,我只使用2个问题) 我想设置一个这样的多维对象。 对于每个DISTINC“ id”并在此“ id”内包含“ id”,“ name”值。 如您所见,我想在第一个对象上分配不同的“ id”作为键 我想我可能会误用括号,对此感到抱
6回复

如何过滤对象数组?

我有这个数组: 我想从属性startDate和EndDate为null的数组中过滤(删除)所有对象。 过滤后的结果: 我尝试了这个: 但这似乎是错误的方式。 如何使用过滤器功能过滤$scope.damageEvants ?
1回复

通过jQuery中不同对象数组中的值过滤对象数组

我是jQuery的新手,但很难找到答案。 我有两个阵列。 和一些代码来过滤数据。 当用户在“组”选择框中选择一个值时,我需要刷新两个选择框。 按预期填充第一个数组(customerData)。 但是我不知道如何填充第二个数组。 我尝试了很多方法,但没有任何喜悦。 countr
5回复

基于另一个键数组对对象数组进行排序

我有两个包含对象的数组。 一个包含某些顺序的键,另一个包含数据,我需要按照给定的排序键数组对数据数组进行排序。 我怎样才能做到这一点? var a = ['d','a','b','c'] ; var b = [{a:1},{c:3},{d:4},{b:2}]; 结果应该是: