加入多个数组,并且return只包含唯一元素jQuery

Join multiple array, and return only unique elements jQuery

我有同位素问题。我正在使用 ajax 加载元素,并且在加载新元素时,它们具有 类 也用于过滤器。

我有一种方法可以通过检查元素是否在视图中来获取元素中的所有 类(我正在使用 imagesLoaded 库来检查图像是否已加载,然后我已经使用 .bind('inview',... 来触发更改,这样我就可以得到我的 类 数组。

$('#container').find('article').each(function(){
     var class_list = $(this).attr('class').split(/\s+/);
});

这将在我加载的对象上 return 一个 类 数组,例如:

["class1", "class2", "class3", ""]

我得到了其中的几个。现在我如何获取所有这些,创建一个新数组并检查它们是否唯一?

我发现 .unique() http://api.jquery.com/jquery.unique/ 和 .concat() 应该创建数组,但我不知道如何定位它们?

您可以在 Array.filter 方法中检查每个 class 作为 jQuery 集合的长度:

$('#container').find('article').each(function(){
     var class_list = $(this).attr('class').split(/\s+/);

     var uniqueClasses = class_list.filter(function(className) {
         return className && $("." + className).length === 1;
     });
});