前端做模糊查询(含AI版)

文章目录

  • 前言
  • 代码实现
    • AI
    • 个人
  • 总结


前言

因为table需要编辑,所以如果从后端拿数据,编辑后筛选数据就会丢失。这时候就需要前端一次性拿到所有数据进行过滤,数据进行浅拷贝,以便过滤后的数据修改之后,同步修改总数居,保存的时候直接保存所有数据。
个人写的版本不算是完整递归,就想搞个递归版本,就用AI写了一个(https://code.fittentech.com/try)这个可以直接内嵌vscode,但他写的我运行不起来,做了些修改才能正常运行,突然就感觉ai暂时还替代不了我呀,哈哈哈

代码实现

AI

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>前端模糊查询示例</title><style>ul {list-style-type: none;padding: 0;}li {padding: 8px;background-color: #f9f9f9;margin-bottom: 2px;}li.match {background-color: #e7f3fe;}</style>
</head>
<body><input type="text" id="searchInput1" placeholder="请输入查询内容..."><input type="text" id="searchInput2" placeholder="请输入查询内容..."><ul id="searchList"><li>苹果 - 红色</li><li>香蕉 - 黄色</li><li>橙子 - 橙色</li><li>葡萄 - 紫色</li><li>西瓜 - 绿色</li></ul>// 这里是我加的,不然只能搜索一次<ul id="searchList1" style='display:none'><li>苹果 - 红色</li><li>香蕉 - 黄色</li><li>橙子 - 橙色</li><li>葡萄 - 紫色</li><li>西瓜 - 绿色</li></ul><script>document.getElementById('searchInput1').addEventListener('blur', function() {updateResults();});document.getElementById('searchInput2').addEventListener('blur', function() {updateResults();});function updateResults() {const query1 = document.getElementById('searchInput1').value.toLowerCase();const query2 = document.getElementById('searchInput2').value.toLowerCase();const allItems = Array.from(document.getElementById('searchList1').getElementsByTagName('li'));const list = document.getElementById('searchList');list.innerHTML = ''; // 清空原有列表内容recursiveFilter(allItems, [query1, query2], function(filteredItems) {/**我把清除列表写在这里的,因为recursiveFilter里的callback会被重复调用const list = document.getElementById('searchList');list.innerHTML = ''; // 清空原有列表内容*/filteredItems.forEach(item => {const li = document.createElement('li');li.textContent = item.textContent;li.classList.add('match');list.appendChild(li);});// 这个返回也是我加的,因为不加返回的话,recursiveFilter方法里的return之后拿不到数据艾,filteredRest会为undefined// return filteredItems;});}function recursiveFilter(items, queries, callback) {if (items.length === 0) {return callback([]);}const [first, ...rest] = items;const filteredRest = recursiveFilter(rest, queries, callback);if (queries.some(query => query && first.textContent.toLowerCase().includes(query))) {// return callback([first, ...filteredRest]);return [first, ...filteredRest];} else {// return callback(filteredRest);return filteredRest;}}</script>
</body>
</html>

个人

	tempArrFun(table, obj) {// 如果没有查询该条件则返回所有,因为searchObj会有page之类的分页参数if (!this.searchObj[obj]) {return table;}return table.filter(item => {if (item[obj]) {if (item[obj].includes(this.searchObj[obj])) return true;return false;}// 是否取空值return false;});},handleSearch(obj) {this.allSearchTable = [];this.searchObj = Obj;let tempArr = [];this.searchInfo.forEach((obj, index) => {if (index === 0) {tempArr = this.tempArrFun(this.allTableData, obj.CODE);} else {tempArr = this.tempArrFun(tempArr, obj.CODE);}if (index === this.searchInfo.length - 1) {this.allSearchTable = tempArr;}});}

总结

简单记录一下,用ai写代码的情况。不擅长单元测试,我要用ai做单元测试,突然发现以前的想法还是很正确(任何时候创意才是最值钱的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mujoco xml < sensor>

< sensor> jointposjointveljointactuatorfrcframequatgyroaccelerometerframeposframelinveltouchobjtype"site" objname"imu" 和site"imu"的区别python中与sensor有关的写法传感器名字索引第几个idid索引传感器名字传感器数量sensor中的…

Python爬虫从入门到实战详细版教程

Python爬虫从入门到实战详细版教程 文章目录 Python爬虫从入门到实战详细版教程书籍大纲与内容概览第一部分:爬虫基础与核心技术1. 第1章:[爬虫概述](https://blog.csdn.net/qq_37360300/article/details/147431708?spm=1001.2014.3001.5501)2. 第2章:HTTP协议与Requests库…

ubuntu--汉字、中文输入

两种输入框架的安装 ibus 链接 (这种方式安装的中文输入法不是很智能&#xff0c;不好用)。 Fcitx 链接这种输入法要好用些。 简体中文检查 fcitx下载和配置 注意&#xff1a;第一次打开fcitx-config-qt或者fcitx configuration可能没有“简体中文”&#xff0c;需要把勾…

Java 数据库性能优化:SQL 查询的 10 个关键点

Java 数据库性能优化&#xff1a;SQL 查询的 10 个关键点 在 Java 开发中&#xff0c;数据库操作是必不可少的一环。然而&#xff0c;随着数据量的增加&#xff0c;数据库性能问题往往会成为系统性能的瓶颈。而 SQL 查询的优化&#xff0c;是提高数据库性能的重要手段。本文将…

Containerd与Docker的相爱相杀:容器运行时选型指南

容器运行时&#xff08;Container Runtime&#xff09;作为云原生基础设施的底层引擎&#xff0c;正从Docker一家独大走向多元化竞争。本文将深入剖析Containerd与Docker的技术血缘、性能差异及选型策略&#xff0c;揭示如何根据场景需求选择最优解。 一、技术血缘&#xff1a;…

计算机组成与体系结构:缓存(Cache)

目录 为什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分层设计 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一级缓存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二级缓存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…

HTTP测试智能化升级:动态变量管理实战与效能跃迁

在Web应用、API接口测试等领域&#xff0c;测试场景的动态性和复杂性对测试数据的灵活管理提出了极高要求。传统的静态测试数据难以满足多用户并发、参数化请求及响应内容验证等需求。例如&#xff0c;在电商系统性能测试中&#xff0c;若无法动态生成用户ID、订单号或实时提取…

tomcat 的安装与启动

文章目录 tomcat 服务器安装启动本地Tomcat服务器 tomcat 服务器安装 https://tomcat.apache.org/下载 Tomcat 10.0.X 启动本地Tomcat服务器 进入 Tomcat 的 bin

TCP三次握手与四次挥手面试回答版本

面试官&#xff1a;说一下TCP三次握手的过程 参考面试回答&#xff1a; 在第一次握手的时候、客户端会随机生成初始化序号、放到TCP报文头部的序号字段中、同时把SYN标志设置为1 这样就表示SYN报文&#xff08;这里是请求报文&#xff09;。客户端将报文放入 TCP 报文首部的序…

AIGC产品如何平衡用户体验与内容安全?

当ChatGPT能写诗、Sora会拍电影、AI主播24小时带货时&#xff0c;一场关于“AI说什么”的隐形战争&#xff0c;正在算法与监管的夹缝中悄然爆发。 从DeepSeek的冲击到多模态技术的祛魅&#xff0c;AIGC正在重塑内容创作的边界。但同时&#xff0c;诸多质疑也正在发声&#xff…

安卓垂直进度条

package 你的包名;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android…

hackmyvm-airbind

收集信息 arp-scan -l nmap -sS -v 192.168.195.162 访问扫描到的ip&#xff0c;直接跳转到登录页面&#xff0c;利用admin/admin弱口令登录 在settings.php中找到一处文件上传&#xff0c;上传一句话木马&#xff0c;上传成功 反弹shell 上传php-reverse-shell.php 抓包&am…

【Rust 精进之路之第14篇-结构体 Struct】定义、实例化与方法:封装数据与行为

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:超越元组,给数据赋予意义 在之前的学习中,我们了解了 Rust 的基本数据类型(标量)以及两种基础的复合类型:元组 (Tuple) 和数组 (Array)。元组允许我们将不同类型的值组合…

jenkins尾随命令

在访问jenkins的网址后面可以追加命令&#xff0c;比如访问地址是 http://10.20.0.124:8080/&#xff0c;常用的有以下几种方式&#xff1a; 1.关闭Jenkins 只要浏览器输入http://10.20.0.124:8080/exit即可退出&#xff0c;或者http://localhost:8080/exit 2.重启Jenkins …

相机模型--CMOS和CCD的区别

1--CMOS和CCD的工作原理 CCD&#xff08;Charge Coupled Device&#xff0c;电荷耦合器件&#xff09;&#xff1a; 1. 图像通过光电效应在感光单元中转化为电荷&#xff1b; 2. 每个像素上的电荷被依次“耦合”并传输到芯片的角落&#xff0c;通过一个或几个模拟输出放大器输…

二叉树理论基础

二叉树种类 满二叉树&#xff1a;每个非叶子节点都有且只有两个子节点。 和完全二叉树&#xff1a;除了最底层外&#xff0c;其他各层都是满的&#xff1b;最底层的节点都集中在左侧。 二叉搜索树&#xff1a;对于任意节点 u&#xff0c;左子树上所有节 点的值都小于 u.val…

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第九讲)

这一期讲解GUI_guider中的容器控件的使用以及相关函数&#xff0c;容器本质上是具有布局和自动调整大小功能的基本对象 &#xff0c;通常用来装载其他子控件。 打开上一期的项目&#xff0c;在工具栏中选中容器控件拖拽到界面中&#xff0c;具体如图所示&#xff1a; 容器默认…

qt QGroupButton 实现两个QPushButton的互斥

import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QButtonGroup, QVBoxLayoutclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 创建两个 QPushButtonself.button1 QPushButton("按钮1&quo…

工业物联网的可视化编程革新:Node-RED与边缘计算的深度融合-纵横智控

在工业物联网的演进历程中&#xff0c;可视化编程工具正成为打破技术壁垒的核心力量。Node-RED作为开源的可视化编程平台&#xff0c;通过其独特的拖拽式逻辑构建能力&#xff0c;为设备连接、数据处理与业务逻辑设计提供了全新范式。本文将深入解析Node-RED的技术优势&#xf…

Uniapp:view容器(容器布局)

目录 一、基本概述二、属性说明三、常用布局3.1 横向布局3.2 纵向布局3.3 更多布局3.3.1 纵向布局-自动宽度3.3.2 纵向布局-固定宽度3.3.3 横向布局-自动宽度3.3.4 横向布局-居中3.3.5 横向布局-居右3.3.6 横向布局-平均分布3.3.7 横向布局-两端对齐3.3.8 横向布局-自动填充3.3…