当前位置: 首页 > news >正文

Vue-列表过滤排序

列表过滤

基础环境

  • 数据
persons: [{ id: "001", name: "刘德华", age: 19 },{ id: "002", name: "马德华", age: 20 },{ id: "003", name: "李小龙", age: 21 },{ id: "004", name: "释小龙", age: 18 },]
  • 根据 名称模糊过滤

监听属性

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>列表过滤</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>列表过滤</h1><div><h2>数组</h2><input type="text" placeholder="请输入名称" v-model="filterName" /><ul><!-- :key="item.id" :key="index" --><li v-for="(item,index) in filterPersons" :key="item.id">{{index}}-{{item.id}}-{{item.name}}</li></ul></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",persons: [{ id: "001", name: "刘德华", age: 19 },{ id: "002", name: "马德华", age: 20 },{ id: "003", name: "李小龙", age: 21 },{ id: "004", name: "释小龙", age: 18 },],filterName: "",filterPersons: [],},methods: {},watch: {filterName: {immediate: true,handler(newValue) {onsole.log("filterName new value => " + newValue);if (newValue === "") {this.filterPersons = this.persons;} else {this.filterPersons = this.persons.filter((item) => {return item.name.indexOf(newValue) > -1;});}},},},});</script>
</html>
  • 效果

初始化

在这里插入图片描述

搜索

在这里插入图片描述

清空

在这里插入图片描述

计算属性

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>列表过滤</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>列表过滤</h1><div><h2>数组</h2><input type="text" placeholder="请输入名称" v-model="filterName" /><ul><!-- :key="item.id" :key="index" --><li v-for="(item,index) in filterPersons" :key="item.id">{{index}}-{{item.id}}-{{item.name}}</li></ul></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",persons: [{ id: "001", name: "刘德华", age: 18 },{ id: "002", name: "马德华", age: 20 },{ id: "003", name: "李小龙", age: 20 },{ id: "004", name: "释小龙", age: 18 },],filterName: ""},computed: {filterPersons(){console.log(" computed filterName value => " + this.filterName); return this.persons.filter((item) => {return item.name.indexOf( this.filterName) > -1;});}},methods: {},watch: {},});</script>
</html>
  • 效果

初始化

在这里插入图片描述

搜索

在这里插入图片描述

清空

在这里插入图片描述

列表排序

基础环境

  • 数据
persons: [{ id: "001", name: "刘德华", age: 19 },{ id: "002", name: "马德华", age: 20 },{ id: "003", name: "李小龙", age: 21 },{ id: "004", name: "释小龙", age: 18 },]
  • 根据 年龄排序

计算属性

  • 代码
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>列表过滤</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script><style>.base {padding: 5px;height: 100px;}</style></head><body><div id="root"><h1>列表过滤</h1><div><h2>数组</h2><input type="text" placeholder="请输入名称" v-model="filterName" /><button @click="sortType='desc'">年龄逆序</button><button @click="sortType='asc'">年龄正序</button><button @click="sortType=''">年龄原序</button><ul><!-- :key="item.id" :key="index" --><li v-for="(item,index) in filterPersons" :key="item.id">{{index}}-{{item.id}}-{{item.name}}-{{item.age}}</li></ul></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在启动是生成生产提示const vm = new Vue({el: "#root",data: {name: "Vue 扛把子",persons: [{ id: "001", name: "刘德华", age: 19 },{ id: "002", name: "马德华", age: 20 },{ id: "003", name: "李小龙", age: 21 },{ id: "004", name: "释小龙", age: 18 },],filterName: "",sortType: ""},computed: {filterPersons() {console.log("computed filterName value => " + this.filterName);const arr = this.persons.filter((item) => {return item.name.indexOf(this.filterName) > -1;});if (this.sortType !== "") {console.log("computed sortType value => " + this.sortType);arr.sort((v1, v2) => {return this.sortType === "asc" ? v1.age - v2.age : v2.age - v1.age;});}return arr;},},methods: {},watch: {},});</script>
</html>
  • 效果

初始化 不排序

在这里插入图片描述

年龄逆序

在这里插入图片描述

年龄正序

在这里插入图片描述

年龄原序

在这里插入图片描述

过滤 & 年龄正序

在这里插入图片描述

过滤 & 年龄逆序

在这里插入图片描述

http://www.xdnf.cn/news/709615.html

相关文章:

  • 手机设备多?怎样设置IP保证不关联
  • [Redis] Redis:高性能内存数据库与分布式架构设计
  • 深入理解 Pinia:Vue 状态管理的革新与实践
  • 【MySQL】C语言连接
  • 十、【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战
  • MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)
  • 敏捷开发中如何避免迭代失控
  • 大数据学习(124)-spark数据倾斜
  • YOLOX 的动态标签分类(如 SimOTA)与 Anchor-free 机制解析2025.5.29
  • C++中IO文件输入输出知识详解和注意事项
  • Spring:从青铜到王者,你的Java修炼手册
  • MySQL入门笔记
  • AI新手入门解锁元生代MaaS平台:API工作流调用全攻略
  • 行业沙龙 | 博睿数据联合承办2025 湾区金科(FinTech)沙龙——智能运维专场,分享主题演讲
  • 基于Web的分布式图集管理系统架构设计与实践
  • grid网格布局
  • day40 python图像数据与显存
  • 嵌入式鸿蒙系统中水平和垂直以及图片调用方法
  • 纯数据挖掘也能发Microbiome?
  • pikachu靶场通关笔记07 XSS关卡03-存储型XSS
  • DeepSeek 赋能卫星遥感:AI 驱动数据分析新范式
  • ubuntu 22.04安装k8s高可用集群
  • 使用 Azure DevOps 管道部署到本地服务器
  • Java 中的 final关键字详解
  • (四) 本地YARN集群的部署
  • 2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组(国赛)解题报告 | 科学家
  • 从微积分到集合论(1630-1910)(历史简介)——第3章——数学分析的出现及其基础性进展(1780-1880)(I.Grattan-Guinness)
  • 基于React和TypeScript的金融市场模拟器开发与模式分析
  • 关于智能体接入后端,在Apifox能够传参数给智能体的测试
  • 【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)