vue的列表过滤

本文探讨了在Vue中使用filter函数进行列表过滤时遇到的问题,强调了基础知识的重要性。介绍了filter函数的用法,它需要配合函数操作,遍历数组并对每个元素进行判断。文中通过代码示例解释了函数参数的含义,阐述了如何在每次遍历中更新变量值,并展示了如何在HTML中结合v-for指令显示过滤后的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实是讲在写列表过滤的时候发现的一些问题,自己才发现自己基础差很多

常用于列表过滤的filter函数的用法和indexOf

先来讲一下filter吧

<div id="root">
			<h2>人员列表</h2>
			<!-- //v-model双向绑定,简写是value -->
			<input type="text" placeholder="请输入名字" v-model="keyWord">
			<ul>
				<li v-for="(p,index) in persons" :key=persons.id>
					{{p.name}}-{{p.age}}-{{p.sex}}
				</li>
			</ul>
		</div>

这是html的代码块

new Vue({
				el:'#root',
				data:{
                    keyWord:'',
					persons:[
						{id:'001',name:'马冬梅',age:19,sex:'女'},
						{id:'002',name:'周冬雨',age:20,sex:'女'},
						{id:'003',name:'周杰伦',age:21,sex:'男'},
						{id:'004',name:'温兆伦',age:22,sex:'男'},
					]
                },
                watch:{
                   keyWord(val){
					//filter是过滤器,有多少个数组会循环多少次数,每次循环都将当前循环次数赋值给函数中的a,原理相当于persons[a]
                    //如果查询到当前数组的判断返回值是true,则将该数组拿出来,放进新的数组里
                    //原理
                    this.persons = this.persons.filter((a)=>{
                        //原理,查询persons[0].name
                        return a.name.indexOf(this.keyWord) !== -1
                    })
					//indexOf根据输入内容查找,有则返回0,没有则返回-1
					//要过滤的值
                   }
                },
            })

这是vue的代码块,其实因为自己看不明白已经加了很多注释了

filter是过滤器,比如代码中我们给persons数组加了filter属性(persons.filter),filter必须使用函数操作,代码运行时,就会开始对persons遍历,然后内部代码进行判断,filter只能接受内部判断出来的布尔值,如true。

那,函数中的形参a是什么值呢?

已知persons有4个数组,所以filter会遍历4次,每次遍历,filter都会将当前遍历的该数组赋值给a这个形参。

比如代码中filter第一次遍历的是{id:'001',name:'马冬梅',age:19,sex:'女'},filter会在内部做这个操作

a = {
     id:'001',
     name:'马冬梅',
     age:19,
     sex:'女'
     }

循环完第一次之后,重新把第二次循环的值赋值给a,以此类推。

上面html里的p也是这个原理

<li v-for="(p,index) in persons" :key=persons.id>
	{{p.name}}-{{p.age}}-{{p.sex}}
</li>
//这里的p同样的原理,循环一次p就被重新赋下一个 

然后html里的for会重新循环一次,获取最新的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值