Vue基礎(14)_列表過濾、列表排序

Array.prototype.filter()【ES5】

filter() 方法創建給定數組一部分的淺拷貝,其包含通過所提供函數實現的測試的所有元素。

語法:
filter(callbackFn)
filter(callbackFn, thisArg)

參數:
callbackFn(回調函數):為數組中的每個元素執行的函數。它應該返回一個真值以將元素保留在結果數組中,否則返回一個假值。該函數被調用時將傳入以下參數:
? ? ? ?element:數組中當前正在處理的元素。
? ? ? ?index:正在處理的元素在數組中的索引。
? ? ? ?array:調用了 filter() 的數組本身。

thisArg(可選):執行 callbackFn 時用作 this 的值。

返回值:
返回給定數組的一部分的淺拷貝,其中只包括通過提供的函數實現的測試的元素。如果沒有元素通過測試,則返回一個空數組。

篩選排除所有較小的值:

以下示例使用?filter()?創建一個過濾數組,該數組刪除了所有值小于?10?的元素。

function isBigEnough(value) {return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]

在數組中搜索:

下例使用?filter()?根據搜索條件來過濾數組內容。

const fruits = ["apple", "banana", "grapes", "mango", "orange"];
/*** 根據搜索條件(查詢)篩選數組項*/
function filterItems(arr, query) {return arr.filter((el) => el.toLowerCase().includes(query.toLowerCase()));
}console.log(filterItems(fruits, "ap")); // ['apple', 'grapes']
console.log(filterItems(fruits, "an")); // ['banana', 'mango', 'orange']

Array.prototype.includes()【ES7(2016)】

includes() 方法用來判斷一個數組是否包含一個指定的值,根據情況,如果包含則返回 true,否則返回 false。

語法:
includes(searchElement)
includes(searchElement, fromIndex)

參數:
searchElement:需要查找的值。
fromIndex(可選):開始搜索的索引(從零開始),會轉換為整數。
? ? ? ? ?①、負索引從數組末尾開始計數——如果 fromIndex < 0,那么實際使用的是 fromIndex +?array.length。然而在這種情況下,數組仍然從前往后進行搜索
? ? ? ? ?②、如果 fromIndex < -array.length 或者省略 fromIndex,則使用 0,這將導致整個數組被搜索。
? ? ? ? ?③、如果 fromIndex >= array.length,則不會搜索數組并返回 false

返回值:
一個布爾值,如果在數組中(或者在 fromIndex 所指示的數組部分中,如果指定 fromIndex 的話)找到 searchElement 值,則該值為 true。

使用 includes() 方法:

const array1 = [1, 2, 3];console.log(array1.includes(2));
// Expected output: trueconst pets = ["cat", "dog", "bat"];console.log(pets.includes("cat"));
// Expected output: trueconsole.log(pets.includes("at"));
// Expected output: false[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
["1", "2", "3"].includes(3); // false

fromIndex 大于等于數組長度

如果 fromIndex 大于等于數組的長度,則將直接返回 false,且不搜索該數組。

const arr = ["a", "b", "c"];arr.includes("c", 3); // false
arr.includes("c", 100); // false

計算出的索引小于 0

如果 fromIndex 為負值,計算出的索引將作為開始搜索 searchElement 的位置。如果計算出的索引小于 0,則整個數組都會被搜索。

// 數組長度為 3
// fromIndex 為 -100
// 計算出的索引為 3 + (-100) = -97const arr = ["a", "b", "c"];arr.includes("a", -100); // true
arr.includes("b", -100); // true
arr.includes("c", -100); // true
arr.includes("a", -2); // false

列表過濾、排序之實例演練:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><title>列表過濾、列表排序</title><script type="text/javascript" src="../js/vue.js"></script>
</head><body><div id="root"><!-- 遍歷對象數組 --><h3>人員列表</h3><input type="text" v-model:value="keyword"><button @click="sortType=1">年齡升序</button><button @click="sortType=-1">年齡降序</button><button @click="sortType=0">原順序</button><ul><li v-for="p in selectPer" :key="p.id">{{p.name}}-{{p.age}}--{{p.sex}}</li></ul></div>
</body></html>

用計算屬性(computed)實現:

<script>new Vue({el: '#root',data: {keyword: '',sortType: '',persons: [{ id: '001', name: '馬小琴', age: 29, sex: '女' },{ id: '002', name: '周曉雨', age: 30, sex: '女' },{ id: '003', name: '周嘯天', age: 28, sex: '男' },{ id: '004', name: '李耀宗', age: 29, sex: '男' },{ id: '005', name: '周曉霞', age: 42, sex: '女' },{ id: '006', name: '李國慶', age: 22, sex: '男' },{ id: '007', name: '馬曉晴', age: 36, sex: '女' }]},computed: {selectPer() {const arr = this.persons.filter(p => p.name.includes(this.keyword))switch (this.sortType) {case 1: return arr.sort((a, b) => a.age - b.age); break;case -1: return arr.sort((a, b) => b.age - a.age); break;default: return arr; break}}}})
</script>

用偵聽屬性(watch)實現:

 <script>new Vue({el: '#root',data: {keyword: '',sortType: '',persons: [{ id: '001', name: '馬小琴', age: 29, sex: '女' },{ id: '002', name: '周曉雨', age: 30, sex: '女' },{ id: '003', name: '周嘯天', age: 28, sex: '男' },{ id: '004', name: '李耀宗', age: 29, sex: '男' },{ id: '005', name: '周曉霞', age: 42, sex: '女' },{ id: '006', name: '李國慶', age: 22, sex: '男' },{ id: '007', name: '馬曉晴', age: 36, sex: '女' }],selectPer: []},watch: {'keyword': {// 立即執行一次監聽。此時keyword為空字符,匹配返回真(true),打印全數組。immediate: true,handler() {this.selectPer = this.persons.filter(p => p.name.includes(this.keyword))}},'sortType'() {switch (this.sortType) {case 1: this.selectPer.sort((a, b) => a.age - b.age); break;case -1: this.selectPer.sort((a, b) => b.age - a.age); break;default: this.selectPer = this.persons.filter(p => p.name.includes(this.keyword)); break}}}})</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83781.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83781.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83781.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ComfyUI 中如何使用 Depth ControlNet SD1.5

目錄 SD1.5 Depth ControlNet 簡介 Depth ControlNet 主要特點 SD1.5 Depth ControlNet工作流準備工作 1. 安裝必要插件 方式一:使用 ComfyUI Manager(推薦) 方式二:通過 git 安裝必要插件 方式三:手動安裝(不推薦) 2.1 下載工作流所需模型 2.2 模型存放位置 SD…

IoT/HCIP實驗-3/LiteOS操作系統內核實驗(任務、內存、信號量、CMSIS..)

文章目錄 概述HelloWorld 工程C/C配置編譯器主配置Makefile腳本燒錄器主配置運行結果程序調用棧 任務管理實驗實驗結果osal 系統適配層osal_task_create 其他實驗實驗源碼內存管理實驗互斥鎖實驗信號量實驗 CMISIS接口實驗還是得JlINKCMSIS 簡介LiteOS->CMSIS任務間消息交互…

mysql的分頁場景下,頁數越大查詢速度越慢的解決方法

一 問題描述 select * from table limit 0,10掃描滿足條件的10行&#xff0c;返回10行&#xff0c; 但當limit 99989,10的時候數據讀取就很慢,limit 99989,10的意思掃描滿足條件的99999行&#xff0c;扔掉前面的99989行&#xff0c;返回最后的10行&#xff0c;這樣速度就會很慢…

MDP的 Commands模塊

文章目錄 Isaac Lab Commands 模塊詳細指南&#x1f4cb; 模塊概述&#x1f3d7;? 模塊架構&#x1f3aa; 命令類型詳解1. &#x1f6ab; 空命令 (NullCommand)2. &#x1f3c3; 速度命令 (VelocityCommand)&#x1f3b2; 均勻分布速度命令 (UniformVelocityCommand)&#x1f…

全流程開源!高德3D貼圖生成系統,白模一鍵生成真實感紋理貼圖

導讀 MVPainter 隨著3D生成從幾何建模邁向真實感還原&#xff0c;貼圖質量正逐漸成為決定3D資產視覺表現的核心因素。我們團隊自研的MVPainter系統&#xff0c;作為業內首個全流程開源的3D貼圖生成方案&#xff0c;僅需一張參考圖與任意白模&#xff0c;即可自動生成對齊精確…

Levenberg-Marquardt算法詳解和C++代碼示例

Levenberg-Marquardt&#xff08;LM&#xff09;算法是非線性最小二乘問題中常用的一種優化算法&#xff0c;它融合了高斯-牛頓法和梯度下降法的優點&#xff0c;在數值計算與SLAM、圖像配準、機器學習等領域中應用廣泛。 一、Levenberg-Marquardt算法基本原理 1.1 問題定義 …

理解網絡協議

1.查看網絡配置 : ipconfig 2. ip地址 : ipv4(4字節, 32bit), ipv6, 用來標識主機的網絡地址 3.端口號(0~65535) : 用來標識主機上的某個進程, 1 ~ 1024 知名端口號, 如果是服務端的話需要提供一個特定的端口號, 客戶端的話是隨機分配一個端口號 4.協議 : 簡單來說就是接收數據…

如何計算光伏工程造價預算表?

在光伏工程的推進過程中&#xff0c;造價預算表的編制是至關重要的環節&#xff0c;傳統的光伏工程造價預算編制方法&#xff0c;往往依賴人工收集數據、套用定額&#xff0c;再進行繁瑣的計算與匯總&#xff0c;不僅效率低下&#xff0c;而且容易出現人為誤差&#xff0c;導致…

新聞速遞|Altair 與佐治亞理工學院簽署合作備忘錄,攜手推動航空航天領域創新

近日&#xff0c;全球計算智能領域領先企業 Altair 與佐治亞理工學院正式簽署合作備忘錄&#xff0c;旨在深化航空航天領域的技術創新合作。 根據協議&#xff0c;佐治亞理工學院的航空航天系統設計實驗室 (ASDL) 將獲得 Altair 的技術支持&#xff0c;運用仿真與數據分析 (DA)…

PLSQLDeveloper配置OracleInstantClient連接Oracle數據庫

PL/SQLDeveloper配置Oracle Instant Client連接Oracle數據庫 文章目錄 PL/SQLDeveloper配置Oracle Instant Client連接Oracle數據庫 1. Oracle Instant Client下載與配置1. Oracle Instant Client下載2. Oracle Instant Client解壓配置1. 解壓2. 配置 2. PL/SQL Developer下載、…

數據庫系統學習

關系型數據庫 關系型數據庫建立在關系模型基礎上的數據庫&#xff0c;關系型數據庫是由多張能相互相連的二維表組成的數據庫 優點&#xff1a; 都是使用表結構&#xff0c;格式一致&#xff0c;易于維護使用通用的sql語言操作&#xff0c;使用方便&#xff0c;可用于復雜查詢…

美國大休斯頓都會區電網數據

美國大休斯頓都會區&#xff08;Houston-The Woodlands-Sugar Land Metropolitan Area&#xff09;電網數據。數據包括&#xff1a;發電、輸電、變電、配電。而且配電線路也很完善&#xff01;下面是截圖&#xff1a; 輸電線路 配電線路 變電站 開關站 電廠

信創主機性能測試實例(升騰P860)

文章目錄 一、引言二、基準測試&#xff08;Unixbench &#xff09;三、CPU測試&#xff08;SPEC CPU 2006&#xff09;四、GPU測試&#xff08;Glmark2&#xff09;五、IO測試&#xff08;Iozone &#xff09;六、內存基準測試&#xff08;Stream &#xff09;七、網絡性能基準…

Web前端基礎:HTML-CSS

1.標題 1.1標題排版 超鏈接 a 標簽&#xff1a; 標簽&#xff1a;<a href"....." target".....">央視網</a> 屬性&#xff1a; href: 指定資源訪問的urltarget: 指定在何處打開資源鏈接 _self: 默認值&#xff0c;在當前頁面打開_blank: 在…

Python數學可視化:3D參數曲面與隱式曲面繪制技術

Python數學可視化&#xff1a;3D參數曲面與隱式曲面繪制技術 引言 在科學研究、工程設計和數學教學中&#xff0c;3D可視化技術是理解復雜幾何形狀和空間關系的重要工具。本文將介紹如何使用Python實現參數曲面和隱式曲面的3D可視化&#xff0c;通過數學公式和代碼示例展示球…

傳輸層:udp與tcp協議

目錄 再談端口號 端口號范圍劃分 認識知名端口號(Well-Know Port Number) 兩個問題 netstat pidof 如何學習下三層協議 UDP協議 UDP協議端格式 UDP的特點 面向數據報 UDP的緩沖區 UDP使用注意事項 基于UDP的應用層協議 TCP協議 TCP協議段格式 1.源端口號…

java 實現excel文件轉pdf | 無水印 | 無限制

文章目錄 目錄 文章目錄 前言 1.項目遠程倉庫配置 2.pom文件引入相關依賴 3.代碼破解 二、Excel轉PDF 1.代碼實現 2.Aspose.License.xml 授權文件 總結 前言 java處理excel轉pdf一直沒找到什么好用的免費jar包工具,自己手寫的難度,恐怕高級程序員花費一年的事件,也…

Keil調試模式下,排查程序崩潰簡述

在Keil調試模式下&#xff0c;若程序崩潰&#xff0c;可以通過以下步驟來定位崩潰的位置&#xff1a; 一、查看調用棧&#xff08;Call Stack&#xff09; 打開調用棧窗口&#xff1a; 在Keil的調試模式下&#xff0c;點擊菜單欄的“View” -> “Call Stack Window”&…

深度解析Mysql中MVCC的工作機制

MVCC,多版本并發控制 定義&#xff1a;維護一個數據的多個版本&#xff0c;使讀寫操作沒有沖突&#xff0c;依賴于&#xff1a;隱藏字段&#xff0c;undo log日志&#xff0c;readView MVCC會為每條版本記錄保存三個隱藏字段 DB_TRX_ID: 記錄最近插入或修改該記錄的事務IDDB_R…

uniapp+vue3實現CK通信協議(基于jjc-tcpTools)

1. TCP 服務封裝 (tcpService.js) export class TcpService {constructor() {this.connections uni.requireNativePlugin(jjc-tcpTools)this.clients new Map() // 存儲客戶端連接this.servers new Map() // 存儲服務端實例}// 創建 TCP 服務端 (字符串模式)createStringSe…