使用列表项的多重过滤器逻辑

2024-04-25

以下代码将搜索任何重复的类<li class="duplicate duplicate">在无序列表中的列表项中,它将显示结果.show() and .hide()其他的。

当前版本

目前它适用于两种场景

First

它显示具有相同类别(至少一个或多个)的任何列表项。

Second

显示列表项类重复项,但我们可以指定它是哪个类。例如查找并显示类 .red 的重复项

我已经把一切都准备好了并开始进行。

var $rows = $(".myList").find(".list_entry");

$("#show_red").on("click", function() {
  $rows.hide().filter(".red").show();
});

$("#reset").on("click", function() {
  $rows.show();
});

function uniqueValues ( array ) {
  return array.reduce(function(result, value){
    if (result.indexOf(value) < 0) result.push(value);
    
    return result;
  }, []);
}

$("#duplicates").on('click', function() {
  $rows.hide().filter(function(){
    //get the classes, ignoring repeated whitespace
    var classes = this.getAttribute('class').split(/\s+/);
    //get the unique classes
    var uniqueClasses = uniqueValues(classes);
    //return true if the unique classes are less than the classes
    return classes.length != uniqueClasses.length;
  }).show();
});

$('.show_duplicate').on('click', function () {
  //get the specific class we want to show duplicates for
  var targetClass = this.getAttribute('data-color');
  
  $rows.hide().filter(function(){
    //get the classes, ignoring repeated whitespace
    var classes = this.getAttribute('class').split(/\s+/);
    //get count of targetClass
    var classCount = classes.filter(function(className){ return className === targetClass; }).length;
    //return true if the unique classes are less than the classes
    //and the specific class appears multiple times
    return classCount > 1;
  }).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="duplicates">Display Duplicates</button>
<button id="show_red">Show Only Red</button>
<button id="reset">Reset</button>

</button>

<ul class="myList">
    <li class="list_entry  red red blue class1"><span style="border-color:red;"></span><span style="border-color:red;"></span><span style="border-color: blue;"></span></li>
    <li class="list_entry  red red orange class1A"><span style="color:red;"></span><span style="border-color:red;"></span><span style="color:orange;"></span></li>
    <li class="list_entry  red blue blue class2"><span style="color:red;"></span><span style="color:blue;"></span><span style="color:blue;"></span></li>
    <li class="list_entry  pink class3"><span style="color:pink;"></span></li>
    <li class="list_entry  orange orange red class4"><span style="color:orange;"></span><span style="color:orange;"></span><span style="color:red;"></span></li>
    <li class="list_entry  black white class5"><span style="color:grey;"></span><span style="color:black;"></span></li>
    <li class="list_entry  white white class6"><span style="color:grey;"></span><span style="color:grey;"></span></li>
    <li class="list_entry  black orange class7"><span style="color:black;"></span><span style="color:orange;"></span></li>
</ul>
<style>
span{
    border-style: solid;
    margin: 1px;
    padding: 1px;
}

li{
    margin:15px;
}
</style>

我想要实现什么

真实例子(游戏例子):

我们有一组按钮可以过滤列表项。列表项将按类属性进行过滤。

过滤器按钮示例

Leveling filters : Level_1, Level_2, Level_3, Level_4, Level_5
Rewards : Experience, AnotherTypeOfExperience, AndAnotherExp
AdditionalRewards : Item1, Item2, Item3
MissionZone : City, Suburbs
MissionType : Defence, Offense

示例<li class="Level_1 City Defence Item1 Item1 Item3"></li>

用户选择以下过滤器示例:

Show me (Level_1 OR City OR Defence AND) Item1 OR Item3
Show me (Level_1 AND) Duplicates Of Item1
Show me (Level_2 OR Defence AND) Item2
Show me (Level_1 AND City AND) Item2 OR Duplicates of Item2

大概的概念 :Show me (Leveling filters $filter_logic MissionZone $filter_logic MissionType (AND -fixed)) Rewards $filter_logic Rewards/AdditionalRewards

因此 Leveling 过滤器、MissionZone、MissionType 是过滤器集 1 奖励过滤器是过滤器组 2。

示例1

filterset1 = [level_1,city];
filterset2 = [Item1,Duplicates];
$filter_logic = AND;

    show : (Level_1 AND City) 1 AND (Item1 AND Duplicates)
             |                   /\            | 
          filterset1         fixed AND    filterset2 

示例2

 filterset1 = [level_1,city];
filterset2 = [Item1,Duplicates];
$filter_logic = AND;

    show : (Level_1 OR City) 1 AND Item1 OR Duplicates
                        |       /\            | 
          filterset1         fixed AND    filterset2 

我什至不知道如何开始。如果您有任何提示,请分享。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用列表项的多重过滤器逻辑 的相关文章

随机推荐

  • 检测windows上的核心数

    如果我在 Linux 或 Mac 上运行 R 我可以使用以下命令检测可用内核的数量multicore detectCores 但是 没有 Windows 版本的多核功能 因此我无法在 Windows 上使用此技术 如何从 R 中以编程方式检
  • 从 Perl 守护程序运行时,为什么 FFMpeg 在五秒后停止?

    我用 Perl 编写了一个小守护程序 它调用 FFMpeg 对视频进行编码 但编码在 5 秒左右后停止 我用这段代码来启动它 my t echo ffmpeg command gt gt self gt FFMPEG OUTPUT my l
  • 在 flutter 应用程序中实现轮廓文本字段输入和标签文本

    我想要一个带有边框的文本字段输入 边框内有标签 如下图所示 先感谢您 我想你想要实现这样的目标 Inactive Active Validation 您可以使用此小部件来实现此设计 class OutlineBorderTextFormFi
  • y -= m < 3 是什么意思?

    在查看一些示例 C 代码时 我发现了这一点 y m lt 3 这是做什么的 它是某种压缩的 for 循环之类的吗 据我所知 用谷歌搜索是不可能的 m lt 3或者是1 or 0 取决于真值 So y y 1 when m lt 3 is t
  • golang - 省略 json 属性进行序列化的优雅方法

    我有一个用户结构 其中包含密码等敏感字段 type User struct UID string json uid binding required Password string json password binding require
  • T-SQL-在单个查询中包含计数总和(*)

    使用表 i 以及字段 date entered 和 code 我编写了一个查询来列出每年 code 12A 的计数 select distinct year date entered as Yr count as Cnt from i wh
  • 如何使用 JavaScript 四舍五入到任意数量的有效数字?

    我尝试了下面的示例代码 function sigFigs n sig if n 0 return 0 var mult Math pow 10 sig Math floor Math log n lt 0 n n Math LN10 1 r
  • 在 Converter 中将 JSF 日历日期转换为 JodaTime

    JodaTime 可能是最好的日期和时间库 因此 我很想从后台 bean 的 JodaTime 实例中的前端 xhtml Calendar 小部件接收用户输入 因此我正在考虑使用 JSF Converter 来完成这项工作 这样做明智吗 同
  • 在node.js 中创建链式方法?

    是否可以在 Node js 中创建像这样的异步链式方法 File create file jpg rename renamed jpg append Hello World 也就是说非阻塞 你基本上想要abstractAPI 上的文件处理操
  • ShapeDrawable 中的偏移形状

    我正在尝试使用扩展 ShapeDrawable 的类来绘制一个带有边框的圆角矩形 请参阅here https stackoverflow com questions 2145131 trying to draw a button how t
  • 有没有基于bootstrap的可视化网页编辑器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在完全自动反转重复周期之间延迟 SwiftUI 中的重复动画

    我正在 SwiftUI 中构建一个 Apple Watch 应用 它可以读取用户的心率并将其显示在心形符号旁边 我有一个动画可以让心形符号反复跳动 由于我知道实际用户的心率 因此我希望使其以与用户心率相同的速率跳动 并在每次速率变化时更新动
  • GAM SDK 测试安装后不显示 Gmail 上下文小工具

    在 Google Apps Marketplace SDK 中测试安装流程后 我无法在 Gmail 中看到上下文小工具 以下是我创建项目所采取的步骤 以域管理员身份登录 创建 Google Apps 控制台项目 创建 OAuth2 客户端
  • 如何在 Angular 6+ 中的本地计算机上运行 Dist 文件夹?

    我正在构建应用程序Angular6 现在我运行命令ng build prod这给了我一个 dist 文件夹 如何在本地主机上检查或提供该文件夹 你可以使用http服务器 https www npmjs com package http se
  • 如何列出已安装的 go 软件包

    据我所知go distribution带有某种package manager After go 1 4 1我已经运行的安装go help为了找到任何能够列出本地安装的子命令go packages 但不幸的是没有 那么该怎么做呢 goinst
  • python: from x import y 改变之前的导入结果

    我试图理解 python 中的包和模块名称隐藏规则 并偶然发现了一种情况 我不明白为什么我看到的结果有意义 这种情况发生在 python 2 中 from future import absolute imports 和Python 3 假
  • HTML5 视频在移动浏览器上自动播放

    我使用以下 HTML5 和 JQuery 代码来播放 URL 位于数组 URLArray 中的视频播放列表 function NextFrag if index lt URLArray length VideoContainer html
  • PHP 数组表示法中的大括号

    我刚刚遇到了一段非常奇怪的 php 代码 oink pig 1 var dump oink oink pig 123123 echo oink pig gt 123123 echo oink pig gt 123123 它的工作原理类似于数
  • TypeScript + NodeJS readline 属性缺失

    我正在使用 TypeScript 开发一个小项目tsc v 2 4 2和节点 v6 10 3 我想在 CLI 中捕获按键 所以我尝试import as readline from readline 然后稍后使用readline emitKe
  • 使用列表项的多重过滤器逻辑

    以下代码将搜索任何重复的类 li class duplicate duplicate 在无序列表中的列表项中 它将显示结果 show and hide 其他的 当前版本 目前它适用于两种场景 First 它显示具有相同类别 至少一个或多个