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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…