vue中的列表过滤和列表排序

列表过滤

  • <body><div id="root"><!--输入框用于模糊查询--><input type="text" placeholder="请你输入名字" v-model="name"><ul><!--in可以换成of--><li v-for="(p,index) in persons" :key="index">{{p.name}}-{{p.age}}-{{p.sex}}</li></ul></div>
    </body>
    <script>const vm = new Vue({el:'#root',data: {name: '',persons:[{id:'001',name:'马冬梅',age:'21',sex:'男'},{id:'002',name:'周冬雨',age:'20',sex:'男'},{id:'003',name:'蔡徐坤',age:'25',sex:'女'},{id:'004',name:'周杰伦',age:'24',sex:'女'},],},//只是监听的作用。先用简写看能不能解决问题watch: {//参数有两个,一个为变化前的参数,一个为变化后的参数。这里只要变化后的参数name(val){//filter为过滤的作用,让其过滤出来.但过滤出来的是新数组没有改变原来的值。故用persons接收this.persons =  this.persons.filter((p)=>{//p.name.indexOf(val)意思是让p.name中查询有没有与val值(也就是name属性)一样的,进行返回除-1以外的索引return p.name.indexOf(val) !== -1})}}})
    </script>
  • 运行一下,因为过滤的缘故,越是搜索数据越少。预期不符.

    解决方案:

    1、加入空的数组 flashPersons,作用是保留persons数组的数据

    2、用完整的watch加入 immediate: true进行尝试

    3、用index方法将flashPersons显示出来数据,

  • <body><div id="root"><!--输入框用于模糊查询--><input type="text" placeholder="请你输入名字" v-model="name"><ul><!--保留原来的数组--><li v-for="(p,index) in flashPersons" :key="index">{{p.name}}-{{p.age}}-{{p.sex}}</li></ul></div>
    </body>
    <script>const vm = new Vue({el:'#root',data: {name: '',persons:[{id:'001',name:'马冬梅',age:'21',sex:'男'},{id:'002',name:'周冬雨',age:'20',sex:'男'},{id:'003',name:'蔡徐坤',age:'25',sex:'女'},{id:'004',name:'周杰伦',age:'24',sex:'女'},],flashPersons: [],},//因为要使用immediate:true,故不能缩写watch: {name: {//加入immediate:true,当用户什么都没有输入时,p为空值。直接调用handler方法,p.name.indexOf(val)中p数组中每个对象的name空值为0,故符合查询条件,都显示出来。immediate: true,handler(val){this.flashpersons  = this.persons.filter((p)=>{return p.name.indexOf(val) !== -1})}}}}})
    </script>

    由于watch的复杂性,用computed计算属性更好

    • 为什么计算属性更好,可以这么想。

    • 1、computed是由data中的数据是计算得来的,无需像watch监听数据的改变才变化。

    • 2、computed计算出来的属性,不会修改原来的属性。无需在创建空数组

    • <body><div id="root"><!--输入框用于模糊查询--><input type="text" placeholder="请你输入名字" v-model="name"><ul><!--保留原来的数组--><li v-for="(p,index) in flashPersons" :key="index">{{p.name}}-{{p.age}}-{{p.sex}}</li></ul></div>
      </body>
      <script>const vm = new Vue({el:'#root',data: {name: '',persons:[{id:'001',name:'马冬梅',age:'21',sex:'男'},{id:'002',name:'周冬雨',age:'20',sex:'男'},{id:'003',name:'蔡徐坤',age:'25',sex:'女'},{id:'004',name:'周杰伦',age:'24',sex:'女'},],},computed: {//计算属性没有用到修改set,直接用简写形式。fashPersons(){//filter方法返回的是新数组。计算属性的值由return返回return this.persons.filter((p)=>{return p.name.indexOf(this.name) !== -1})}}})
      </script>
    • 当注释后的代码,无法折叠时。可以用#region和#endregion

      列表排序

      • 思路分析

        当点击升序,sortType的值变为2,之后执行v-for语句中flashPersons在查询的基础上。添加一个排序的方法。

        点击原数组按钮,sortType的值变为0。回到只有查询的功能。也就是列表过滤的内容

      • <body><div id="root"><input type="text" placeholder="请你输入名字" v-model="name"><button @click="sortType = 2">升序</button><button @click="sortType = 1">降序</button><button @click="sortType = 0">原数组</button><ul><!--保留原来的数组--><li v-for="(p,index) in flashPersons" :key="index">{{p.name}}-{{p.age}}-{{p.sex}}</li></ul></div>
        </body>
        <script>const vm = new Vue({el:'#root',data: {name: '',sortType: 0,persons:[{id:'001',name:'马冬梅',age:'21',sex:'男'},{id:'002',name:'周冬雨',age:'20',sex:'男'},{id:'003',name:'蔡徐坤',age:'25',sex:'女'},{id:'004',name:'周杰伦',age:'24',sex:'女'},],},computed: {flashPersons () {//实现查询之后,这里将第一个return 改成 const num ,因为不着急进行返回数据。实现的功能是查询和排序一同实现const num = this.persons.filter((p) => {//这个return 将数据返回给numreturn p.name.indexOf(this.name) !== -1})//this.sorType为true,也就是等于1或2if (this.sortType) {//利用sort()方法实现升序和降序的功能,p1 - p2 为升序,p2 - p1为降序num.sort((p1, p2) => {return this.sortType === 1 ? p2.age - p1.age : p1.age - p2.age})}//这个return 将数据返回给flashPersonsreturn num}}})
        </script>

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

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

相关文章

航天博物馆3D虚拟交互展厅让大众对科技发展有更深切的理解和感受

博物馆作为人们了解历史、文化和艺术的重要场所&#xff0c;现在可以通过VR全景技术来进行展览&#xff0c;让参观者身临其境地感受历史文化的魅力。本文将介绍博物馆VR全景的特点、优势&#xff0c;以及如何使用VR全景技术来使得博物馆的展览和教育活动更丰富。 VR数字博物馆…

WPF图形变形使用技巧

在 WPF (Windows Presentation Foundation) 中&#xff0c;图形变形通常是通过使用 Transform 对象来实现的。WPF 提供了几种不同类型的 Transform&#xff0c;包括&#xff1a; TranslateTransform&#xff1a;用于在 x 轴和 y 轴上移动&#xff08;平移&#xff09;元素。Sc…

SSH 下载及安装之 Windows Server

文章目录 1 概述1.1 操作系统截图1.2 下载 2 安装2.1 解压到指定路径2.2 CMD 到 OpenSSH 目录下2.3 安装 sshd 服务2.3 开放端口 222.4 配置开机自启 sshd 服务2.5 配置环境变量 path2.6 测试 3 连接3.1 使用 Xshell 连接3.2 输入登录用户名3.3 输入登录密码3.4 会话已建立 1 概…

3、如何从0到1去建设数据仓库

1、数仓实施过程 1.1 数据调研 数据调研包括&#xff1a;业务调研、需求调研 业务调研 需要调研企业内有哪些业务线、业务线的业务是否还有相同点和差异点 各个业务线有哪些业务模块&#xff0c;每个模型下有哪些业务流程&#xff0c;每个流程下产生的数据 是怎样存储的 业务调…

python数据结构与算法-16_优先级队列

优先级队列 你可能比较奇怪&#xff0c;队列不是早就讲了嘛。这里之所以放到这里讲优先级队列&#xff0c;是因为虽然名字有队列&#xff0c; 但其实是使用堆来实现的。上一章讲完了堆&#xff0c;这一章我们就趁热打铁来实现一个优先级队列。 实现优先级队列 优先级队列(Pr…

UWA报告使用技巧小视频,你get了么?(第十一弹)

随着玩家对手游渲染品质的要求日益趋上&#xff0c;60帧、各种花式后处理导致发热、耗电等问题日趋明显。本期UWA报告使用技巧将分享关于GPU优化的专题姊妹篇。 《GPU性能优化篇》 UWA专注于手游GPU性能的优化&#xff0c;以确保您的游戏体验得以最佳展现。基于最新发布的GOT …

141.【Git版本控制】

Git-深入挖掘 (一)、Git分布式版本控制工具1.目标2.概述(1).开发中的实际常见(2).版本控制器的方式(3).SVN (集中版本控制器)(4).Git (分布版本控制器)(5).Git工作流程图 (二)、Git安装与常用命令1.Git环境配置(1).安装Git的操作(2).Git的配置操作(3).为常用的指令配置别名 (可…

轻松解决rpm软件包的依赖问题 yum download ,rpm和deb不同系列

centos rpm系列的 为它往往有很多依赖项目。比如&#xff0c;我们来查看一下net-tools的依赖项有哪些&#xff1a; yum deplist net-tools 推荐使用以下几种方法&#xff1a; 1.repotrack 我这里也以上期讲到的Mariadb为例演示&#xff0c;以下操作需要在有网络的环境下进…

国内企业出海首选的免费开源订单管理系统(OMS)解决方案

用开源智造Odoo订单管理系统 (OMS) 解决方案实现"订单到收款"流程自动化 开源智造Odoo 订单管理软件功能消除了手动操作瓶颈&#xff0c;可防止出错&#xff0c;还建立了从销售报价到订单履行的顺畅工作流来确保及时开票和付款&#xff0c;从而帮助您理顺订单处理过程…

Python将多个视频帧组合成.mp4视频

已经有很多文章描述了如何将视频拆分成视频帧&#xff0c;例如&#xff1a;https://blog.csdn.net/WYKB_Mr_Q/article/details/124929081 那我们如何将很多视频帧重新组合成视频呢&#xff1f; 这里我们主要用到了 OpenCV 库中的 VideoWriter 类。 OpenCV种的 cv2.VideoWrit…

jdbc批量插入或更新数据

mybatis可以批量插入或更新数据&#xff0c;不过mybatis底层也是基于jdbc来实现的&#xff0c;如何使用jdbc批量操作数据&#xff1f;本文给出demo。 /*** JDBC分批次批量插入* * throws IOException*/public static void testJDBCBatchInsertUser() throws IOException {Conne…

工作流引擎的架构设计主要考虑以下方面

工作流引擎的架构设计主要考虑以下方面&#xff0c;以驰骋工作流引擎为例来说明。 高度抽象和封装&#xff1a;为了适应各种业务场景&#xff0c;工作流引擎应具备高度抽象和封装的特性&#xff0c;以便统一处理各流程。灵活配置&#xff1a;工作流引擎应支持灵活的配置&#…

Linux之实现简易的shell

1.打印提示符并获取命令行 我们在使用shell的时候&#xff0c;发现我们在输入命令是&#xff0c;前面会有&#xff1a;有用户名&#xff0c;版本&#xff0c;当前路径等信息&#xff0c;这里我们可以用环境变量去获取: 1 #include <stdio.h>2 #include <stdlib.h>…

python如何快速查找到想要的文档

字多不看版&#xff0c;直接体验 待补充 演示代码 # -*- coding:UTF-8 -*-# region 导入必要的依赖包 import os import subprocess from enum import Enum模块名 pyperclip try:import pyperclip # 需要安装 pyperclip 模块&#xff0c;以支持粘贴板操作 except ImportEr…

PTA-成绩转换

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则&#xff1a; 大于等于90分为A&#xff1b;小于90且大于等于80为B&#xff1b;小于80且大于等于70为C&#xff1b;小于70且大于等于60为D&#xff1b;小于60为E。 输入格式: 输入在一行中给出一个整数的百分制成…

羊大师教你如何科学控制体重,轻松瘦下来

羊大师教你如何科学控制体重&#xff0c;轻松瘦下来 我们都知道&#xff0c;控制体重对于保持健康和美丽至关重要。然而&#xff0c;许多人在减肥的道路上走得波折重重&#xff0c;常常陷入挫败和不知所措的境地。那么&#xff0c;如何科学控制体重&#xff0c;轻松瘦下来呢&a…

项目经理只需要有PMP证书就行?

就目前而言&#xff0c;大部分人对于项目经理的认识还停留在&#xff1a;有项目管理经验&#xff0c;有对应的工作年限&#xff0c;有PMP证书。所以绝大多数人都认为只要报考了PMP项目管理&#xff0c;取得PMP证书&#xff0c;即可加入项目经理的圈子&#xff0c;薪资翻倍。 但…

协同过滤与矩阵分解讲解(PPT)

总览 协同过滤算法&#xff0c;就是一种完全依赖用户和物品之间行为关系的推荐算法。 从字面理解&#xff0c;协同大家的反馈、评价和意见一起对海量的信息进行过滤&#xff0c;从中筛选出用户可能感兴趣的信息。 知识概括 从这几个方面进行分析。 一、基于用户的协同过滤 显示…

6个PPT素材网站,让你快速做出好看的PPT

找PPT模板一定要收藏好这6个网站&#xff0c;能让你快速做出好看的PPT&#xff0c;重点十可以免费下载&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材&#xff0c;像设计类、办公…

力扣labuladong——一刷day48

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣1602. 找到二叉树中最近的右侧节点二、力扣437. 路径总和 III三、力扣560. 和为 K 的子数组 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式…