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.pswp.cn/news/163910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163910.shtml
英文地址,請注明出處:http://en.pswp.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 的子數組 前言 二叉樹的遞歸分為「遍歷」和「分解問題」兩種思維模式…