深入理解 JS/TS 中的 filter 方法及其布尔值筛选功能

今天写需求的时候,需要对后端传回来的数据做乱码校验处理,需要筛除乱码数据。

这里我使用正则表达式并封装了一个判断是否为正常字段的方法。(如果是正常字段返回true,乱码字段返回false)

对后端返回的数据,可以直接用filter进行乱码字段的筛除。

在这篇博客里我衍生为讲解“使用filter处理数组从中筛出符合条件的元素

什么是filter?

filter 方法是数组对象的一个内置方法,用于创建一个新数组,其中包含所有通过指定函数测试的元素。(filter 方法会遍历数组中的每个元素,并将那些使测试函数返回 true 的元素组成一个新的数组。)

❗再三强调,会返回一个新的数组哦!!!但使用了filter不会对原数组产生影响。

filter的语法
array.filter(callback(element[, index[, array]])[, thisArg])
  • callback: 测试函数。
    • element: 当前元素。
    • index (可选): 当前元素的索引。
    • array (可选): 调用 filter 的数组。
  • thisArg (可选): 执行 callback 时用作 this 的值。

(我在使用时只传入了当前元素,并在测试函数中对元素进行正则测试/判断)

返回值

一个新的数组,包含所有使 callback 返回 true 的元素。如果没有元素通过测试,则返回一个空数组。

(拿我的需求做比方,如果需要留下的是正常元素,就要使得测试函数正常元素的返回值为true哦,但如果我要筛选出来的是乱码元素,就需要使得测试函数乱码元素的返回值为true)

传入返回布尔值的函数进行筛选

filter 方法的强大和遍历之处在于允许我们传入一个返回布尔值的函数。这个函数用于测试数组中的每个元素,并根据测试结果决定是否保留该元素。


举个简单的使用例子

需求:筛选偶数
const numbers = [1, 2, 3, 4, 5, 6];// 定义一个回调函数来测试是否为偶数
const isEven = (num) => num % 2 === 0;// 使用 filter 方法筛选偶数
const evenNumbers = numbers.filter(isEven);console.log(evenNumbers); // 输出: [2, 4, 6]

测试函数:isEven

测试目的:测试一个数字是否为偶数

numbers.filter(isEven)返回值:由numbers数组中偶数组成的数组

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

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

相关文章

快速创建SpringBoot项目

在项目开发时候,我们不会自己创建一个maven项目,自己慢慢导入依赖,有更方便的方法: 1.idea快速创建spring boot项目 使用Spring Initializr 注意1:需要联网 注意2:resources里的目录结构: …

【js判断机型】

var isIOS /(iPhone|iPad|iPod)/i.test(navigator.userAgent) var isiPad navigator.userAgent.match(/(iPad)/) || (navigator.platform ‘MacIntel’ && navigator.maxTouchPoints > 1) 上面这个不行的话,再试下这个 var isiPad (navigator.userAg…

那些年我为了考PMP踩过的坑.....

说到考PMP我尊嘟很难过且伤心,众所周知,报考PMP都是要报机构的而且还是PMI认证的机构,所以在报考PMP过程中选的机构我可以说踩过了很多坑了...... Q:包过吗? 大家千万不要信某某机构说的包过噱头,真的很坑…

4000字读懂实时数仓的过去现在和未来(建议收藏)

1991年,比尔恩门(Bill Inmon)出版了他的第一本关于数据仓库的书《Building the Data Warehouse》,标志着数据仓库概念的确立。 我们所常说的企业数据仓库Enterprise Data Warehouse (EDW) ,就是一个用于聚合不同来源的…

【嵌入式】嵌入式Linux开发实战指南:从交叉编译到触摸屏交互

文章目录 前言:1.简介1.1. 交叉编译工具1.2. 项目开发流程:1.3. ARM开发板的连接方法 2. 开发板连接3. 系统文件 IO4. 设置共享文件夹3.1. 读文件3.2. 写文件3.2. 设置文件偏移量 4. LCD显示屏显示4.1. LCD 显示颜色4.2. 将文件下载到开发板4.2.1. 在CRT…

002.Linux CentOS7 安装

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

【Android面试八股文】Kotlin内置标准函数apply的原理是什么?

文章目录 一、原理解析二、 示例代码2.1 具体示例应用场景2.2 为什么使用 `apply`?apply 是 Kotlin 标准库中的一个高阶函数,它的作用是在对象上执行一个代码块,并返回这个对象本身。其原理涉及到函数类型和接收者对象的结合使用。 一、原理解析 函数类型与接收者对象的结合…

代码随想录算法训练营DAY42|1049. 最后一块石头的重量 II、494. 目标和、474.一和零

1049. 最后一块石头的重量 II 题目链接:1049. 最后一块石头的重量 II class Solution(object):def lastStoneWeightII(self, stones):""":type stones: List[int]:rtype: int"""n len(stones)sum_stones sum(stones)weight sum_…

Git Extensions gui工具差异显示乱码

某些IDE例如KEIL等默认编码格式为GB2312,而git extensions默认utf-8,如果不想修改文件格式为utf-8的话就修改git extensions格式为GB2312。 默认是没有chines 这个选项的,我这里是已经添加好的。方法为上方工具栏->设置->Git->设置…

Linux C编译器从零开发三

AST语法树 BNF抽象 expr equality equality relational ("" relational | "!" relational)* relational add ("<" add | "<" add | ">" add | ">" add)* add mul ("" …

为什么很多Java程序员会下意识觉得Java的就是最好的?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;做为一个真正热爱编程&#…

使用rufus做Kali Linux时持久分区大小如何设置

持久分区大小是什么意思&#xff1a; 持久分区大小指的是在U盘安装引导Kali Linux时&#xff0c;为保存Kali修改后的设置&#xff08;如中文界面显示等&#xff09;而预留的空间大小。这个空间相当于电脑中的D盘&#xff0c;用于保存修改后的设置。 而剩下的空间则用于安装Kali…

UE5 发射物目标追踪

UE5 发射物目标追踪 思路 求出需要旋转的角度&#xff0c;然后每帧旋转&#xff0c;再更新速度 实现&#xff1a; 求出发射物当前方向和目标方向的旋转后&#xff0c;插值求每帧的旋转。 //向目标旋转 float Speed MovementComponent->Velocity.Length(); //获取发射物…

MyBatis常用转义字符 大于、小于、大于等于、小于等

在Mybatis编写特殊常用字符你会发现会报错,比如常用的<,>,<,> 等&#xff0c;原因是与xml文件的元素<>冲突&#xff0c;所以需要转义。整理转义字符如下&#xff1a; 符号原始字符转义字符大于>>大于等于>>小于<<小于等于<<和&…

【并发程序设计】总篇集 Linux下 C语言 实现并发程序

11_Concurrent_Programing 文章目录 11_Concurrent_Programing1.进程概念进程内容进程类型进程状态 2.进程常用命令进程信息命令top 命令进程信息表 进程优先级命令nice 命令renice 命令 后台进程命令 3.子进程创建子进程fork 函数 结束进程exit 函数_exit 函数 回收子进程wait…

【Unity3D渲染】灯光组件及其使用

在Unity3D中&#xff0c;灯光&#xff08;Light&#xff09;是一个关键组件&#xff0c;用于照亮场景中的物体&#xff0c;从而模拟现实世界中的光照效果。灯光对于渲染至关重要&#xff0c;因为它影响物体的可见性、阴影、颜色和氛围。 灯光的含义&#xff1a; Unity中的灯光…

Flutter 中点击输入框之外的区域,进行失焦,收起键盘

首先引用 FocusNode() FocusNode focusNode FocusNode(); 然后在输入框组件中调用即可 TextField(controller: _textController,textAlign: TextAlign.start,focusNode: focusNode,onTapOutside: (e) > {focusNode.unfocus()},onEditingComplete: () {FocusScope.of(con…

功能测试 之 单模块测试----抢购模块

1.先测后台&#xff0c;再测前台 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候&#xff1a;需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块&#xff1a;需求跟实现的内容不一致 (跟产品和研发一起确认。研发为什…

numpy数组的保存与加载

保存 np.save("onnx.npy", batch_output) 加载 onnx_res np.load("onnx.npy")

【面试】用属性动画和view的layoutparams做一个view的移动效果 有啥区别

属性动画&#xff1a;通过Animator执行动画进度过程中持续调用View的属性方法&#xff0c;实现View的平移、缩放、透明度、旋转动画。 对应的属性方法&#xff1a; // 平移属性方法 public void setTranslationX(float translationX) public void setTranslationY(float trans…