Vue实现模糊查询:filter()

news2024/11/17 21:22:28

需求:在输入框里输入内容,包含相关内容的值被筛选出来;

图示:

最初的代码:

<body>
    <div id="box">
        <input type="text" @input="handleInput()" v-model="mytext">
        <ul>
            <li v-for="item in datalist" :key="item">
                {{item}}
            </li>
        </ul>
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                mytext:"",
                datalist:["aaa","add","bbb","bbc","ccc","ddd","abd"]
            },
            methods:{
                handleInput(){
                    console.log("input",this.mytext)
                    this.datalist=this.datalist.filter(item=>item.includes(this.mytext))//筛选出来包含输入框值的元素
                    //然后赋值给原数组,因为filter不会改变原数组,所以要用赋值的办法使得原数组改变,进而改变dom
                }
            }
        })
    </script>
</body>

思路分析:

input、change事件选择:

  • 首先我们要获取输入框里的内容,知道输入框当前的内容才能进行筛选,事件有两种可以选择:input和change,我们使用了input,它的作用是:只要输入框的value发生改变就会触发;为什么不用change,因为它的作用是:当value值发生改变而且输入框失去焦点的时候才能触发,也就是如果我们改变了输入框的值,但是鼠标一直放在输入框中没失去焦点,它也是不会触发的,我们需要的是输入框每次改变,就进行筛选,所以说change是不行的。

 v-model的使用:

  • 使用v-model的原因是能拿到输入框的值,把它放在input事件的回调函数里,就可以实现每次输入框的值改变就能拿到相应的值。
  • 也就是“console.log("input",this.mytext)”这句代码的含义。

 

filter的用法:

  • filter(回调函数):filter方法具有筛选功能,筛选出来符合条件的值,参数是回调函数,本来的写法是下面这样,代码中用的是箭头函数的写法,箭头函数写法可以省略function,(),{}和return(当然是在一定条件限制下,上面的代码符合这个要求,所以可以省略)。箭头后面写的是判断条件。
filter(function(){
            return 判断条件
        })

 

includes方法:

  • 这个方法是字符串的一个方法,可以找出来包含某个内容的所有元素。

 

覆盖原数组的原因:

  • 筛选完以后要赋值给原数组是因为,必须改变原数组,才能实现dom的更新,而filter方法不会改变原数组,所以要用赋值的方法。

 

为什么要重新赋值一个数组originList:

因为如果按照下面这个方法:

结果是,当你输入一个“a”,筛选出来了包含a的元素,然后数组就改变成只包含a的元素的值了,比如数组变为["aaa","add",'abd"],然后下一次想在数组上去查其他的元素,比如查“c”相关的元素,就查不到了,因为原数组已经被改变了,回不去了。所以这就有问题了,因为我们想每次都在原数组的基础上进行查。 有几种解决办法

(1)方法一:上面那个复制一个新的数组出来,每次在新数组上查询,再赋值给datalist数组进行显示,这样新数组始终是不会改变的,所以这样就能保证我们每次查询都是在完整的数组上查询的。 代码见:(在原来的代码中更改的部分)

  • 每次从老数组里面过滤赋值给新数组,就能保证“回不去的问题”

 结果:

 

(2) 方法二:定义一个函数表达式,通过返回筛选后的结果,重新让li遍历

<body>
    <div id="box">
        <input type="text" v-model="mytext">
        <ul>
            <li v-for="item in test()" :key="item">
                {{item}}
            </li>
        </ul>
        <!-- 定义一个函数表达式 -->
        <!-- {{test()}} -->
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                mytext:"",
                datalist:["aaa","add","bbb","bbc","ccc","ddd","abd"],
            },
            methods:{
                test(){
                    return this.datalist.filter(item=>item.includes(this.mytext))
                }
            }
        })
    </script>
</body>
  • test()是一个方法,函数表达式;
  • 表达式可以放在{{}}双括号里,也可以放在“v-”指令里,函数表达式也是表达式的一种,所以可以放在v-for里;
  • 每次mytext改变,test()方法都会重新执行;
  • 重点注意的地方:

 

 

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

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

相关文章

计算机网络 - 网络层 选择填空判断复习题

一. 单选题&#xff08;共25题&#xff0c;80分&#xff09; (单选题) 以下( )协议完成了从网卡到IP地址的映射。 A A.ARP协议 B.RARP协议 C.IGMP协议 D.ICMP协议 (单选题) 一个C类地址,采用了255.255.255.240作为子网掩码,那么这个C类地址可以划分为( )个子网。 A A.16 B.32 …

零基础自学javase黑马课程第十四天

零基础自学javase黑马课程第十四天 ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&#x1f39e;2022年11月21日&…

【Hack The Box】Linux练习-- FriendZone

HTB 学习笔记 【Hack The Box】Linux练习-- FriendZone &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#…

秋招失足,拿到这份“Java 高分指南(25 专题)”,金三银四翻盘有望

面试造火箭&#xff0c;工作拧螺丝&#xff01;金九银十灰溜溜地落榜&#xff0c;备受打击。正当准备明年金三银四之际&#xff0c;意外喜提朋友赠送的这“Java 高分指南&#xff08;25 专题&#xff09;”&#xff1a;Elasticsearch、微服务、Linux、JavaOOP、集合/泛型、Mysq…

move_base代码解析(一)MoveBase::executeCb

move_base是ROS中的经典路径规划算法&#xff0c;move_base 功能包提供了基于动作(action)的路径规划实现&#xff0c;move_base 可以根据给定的目标点&#xff0c;控制机器人底盘运动至目标位置&#xff0c;并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息。 …

HTTP协议中的HTTP报文

HTTP中的HTTP报文 1、HTTP报文信息 1.1定义 用于HTTP协议交互的信息叫做HTTP 报文。 HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行&#xff08;CRLF&#xff09;来划分&#xff08;通常并不一定要有报文主体&#xff09;。 1.2请求报文和响应报文 请…

CSS13_由html{height: 100%} 引发的CSS百分比宽高度的思考

一、html, body { height:100% } CSS有一个常见设置&#xff1a;html,body{ height:100% }&#xff0c;可能大家已经熟视无睹了&#xff0c;但细细思索&#xff0c;可能会有些奇怪&#xff0c;为什么html还需要设置height:100%呢&#xff1f;html不就代表整个页面了吗&#xf…

[附源码]java毕业设计网上书店管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringBoot项目使用JSP

SpringBoot不推荐使用JSP,而是使用模板技术代替JSP视图 先创建个SpringBoot项目 使用JSP需要如下配置 加入一个处理JSP的依赖(使用该JSP依赖原因是SpringBoot的jar包是内嵌了一个Tomcat因此要用这个Jar包,如果你的SpringBoot需要打成war包,不使用内嵌Tomcat,可用通用的JSP依赖…

深度学习基础--神经网络(3)神经网络的学习,损失函数初识

文章目录神经网络的学习从数据中学习数据区分损失函数均方误差交叉熵误差mini-batch学习损失函数更新的思路本文为学习笔记整理参考书籍&#xff1a;《深度学习入门 : 基于Python的理论与实现 》/ (日) 斋藤康毅著 ; 陆宇杰译. – 北京 : 人民邮电出版社, 2018.7&#xff08;20…

Android插件式换肤以及资源加载流程分析

前言 APP更换皮肤的方式有很多&#xff0c;如系统自带的黑夜模式、插件换肤、通过下发配置文件加载不同主题等等&#xff0c;我们这里就浅谈下插件换肤方式。想实现插件换肤功能&#xff0c;我们就需要先弄清楚 :APP是如何完成资源加载的。 资源加载流程 这里我们以ImageVie…

植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(中)

植物大战僵尸变态辅助开发系列教程&#xff08;E语言实现和VC6实现&#xff09;&#xff08;中&#xff09;26、第一种方法实现变态加速功能27、第二种方法找出变态攻击加速的方法28、加快阳光、金币生产速度29、全屏僵尸29、全屏减速第一课30、全屏减速第二课31、全屏奶油的找…

(Transferrin)TF-PEG-DBCO/TCO/tetrazine 转铁蛋白-聚乙二醇-二苯基环辛炔/反式环辛烯/四嗪

产品名称&#xff1a;转铁蛋白-聚乙二醇-二苯基环辛炔 英文名称&#xff1a;(Transferrin)TF-PEG-DBCO 质量控制&#xff1a;95% 原料分散系数PDI&#xff1a;≤1.05 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 用 途&#xff1a;仅供科研实验使用&#xff0c…

Android App开发动画特效中插值器和估值器的讲解以及利用估值器实现弹幕动画实战(附源码和演示视频 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、插值器和估值器 插值器用来控制属性值的变化速率&#xff0c;也可以理解为动画播放的速度&#xff0c;默认是先加速再减速。若要给动画播放指定某种速率形式&#xff0c;调用setInterpolator方法设置对应的插值器实现类即可…

Spring Boot 分离配置文件的 N 种方式

今天聊一个小伙伴在星球上的提问&#xff1a; 问题不难&#xff0c;解决方案也有很多&#xff0c;因此我决定撸一篇文章和大家仔细说说这个问题。 1. 配置文件位置 首先小伙伴们要明白&#xff0c;Spring Boot 默认加载的配置文件是 application.properties 或者 application…

【云计算大数据_牛客_Hbase】选择/判断——Hbase

1.Hive 1.下面关于Hive metastore的三种模式的描述错误的是() Derby方式是内嵌的方式,也是默认的启动方式,一般用于单元测试local模式中,使用MySQL 本地部署实现metastoreremote模式为远程MySQLDerby方式在同一时间只能有多个进程连接使用数据库 2. 百度文库 2、代码sel…

Android App开发中集合动画和属性动画的讲解及实战演示(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、集合动画 有时一个动画效果会加入多种动画&#xff0c;比如一个旋转一边缩放&#xff0c;这时便会用到集合动画AnimationSet把几个补间动画组装起来&#xff0c;实现让某视图同时呈现多种动画的效果 因为集合动画和补间动…

Jetson Orin使用Yolo5开源数据集训练模型检测口罩

软硬件环境&#xff1a; 乌班图 20.04 64位蟒蛇与 3.8.10英伟AGX Orin库达11.4PyTorch1.12YOLOv5-6.1感谢开源数据集下载地址 正常都是自己收集完了训练&#xff0c;今天就省略这个步骤了。 如果想自己制作看下面的流程。 软硬件环境搭建教程链接 刷机的话使用官方教程或者…

DNS协议

DNS服务器 人类更喜欢记忆主机名&#xff0c;而路由器更喜欢定长的、有结构层次的IP地址&#xff0c;DNS应运而生&#xff1a;DNS能进行主机名到IP地址转换的目录服务。 DSN是&#xff1a; &#xff08;1&#xff09;一个由分层的DNS服务器&#xff08;DNS server&#xff09;实…

元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(2)

Saas/内部解决方案 2.5、Azure Purview 地址&#xff1a;Azure Purview - Unified Data Governance Solution | Microsoft Azure 特点&#xff1a; 1、创建跨整个数据资产的统一数据地图&#xff0c;为有效的数据治理和使用奠定基础 1.1、自动化和管理混合源的元数据&#xf…