JavaScript 高阶函数小结

JavaScript 高阶函数小结

js的函数其实都是指向某个变量,既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另外一个函数作为参数,这种函数就称之为高阶函数。

Arr扩展有:forEach、map、reduce filter sort every some find findIndex

测试数据

let arr = [1, 2, 34, 5];
let obj = { age: 1, name: "111" };

forEach

允许将一个函数作为参数传递给数组的每个元素,并对每个元素执行该函数, return 没有返回值

arr.forEach((item,index, arr1)=>{console.log(item, index);arr1.push(item)
})Object.keys(obj).forEach((item,index)=>{console.log(item, index, obj[item]);
})

map

map 可以对数组的每个元素调用指定的回调函数,并返回包含结果的数组,返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

let arr1 = arr.map((item,index)=>{return item+1;
})
console.log(arr1);

reduce

该方法接收一个函数作为累加器,数组中的每个值(从左到右)都会被该函数处理,并被累加到累加器中
该方法会从数组的第一个元素开始,一直到最后,所以会改变累加器的值。最终返回累加器的最终值
累加器的初始值是reduce方法的第二个参数,如果该参数省略,那么就会使用数组的第一个元素作为累加器的初始值

let res = arr.reduce((preVal, curVal, curIndex)=>{console.log(curIndex);return preVal+curVal;
})
console.log(res);

filter

顾名思义,用于过滤数组元素,返回过滤符合要求元素组成的数组
把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
方法会将数组元素依次传入一个回调函数,在回调函数中判断元素是否符合指定条件,若符合则返回。

let arr1 = arr.filter((item,index)=>{return item>3;
})
console.log(arr1);

sort

对数组元素进行排序的方法
该方法默认不传参数,按照字符编码顺序进行排序,排序顺序可以是字母或数组

let arr1 = arr.sort();
console.log(arr1);
// ---------------
let arr2 = arr.sort((a, b)=>{if(a-b>0){return 1;//升序}else if(a-b<0){return -1;//降序}return 0;//相等})
console.log(arr2);

every

用来检测数组中所有元素是否满足指定的条件
every接收一个函数作为测试条件,数组的每一个元素都会被这个函数处理,如果所有的元素满足测试条件,则返回true,否则返回false
判断数组的每一项是否满足条件,只有所有项都满足条件,才会返回true

let result = arr.every((item,index)=>{return item>3;//数组每一项必须符合这个要求
})
console.log(result);

some

判断数组中是否存在满足条件的元素,只要存在一项,就返回true

let res = arr.some((item, index) => {return item > 3;
});
console.log(res);

find

该方法返回数组中第一个符合条件的元素值

let val = arr.find((item, index)=>{return item >3;
})
console.log(val);

findIndex

该方法返回数组中第一个符合条件元素的位置索引

let index = arr.findIndex((item, index) => {return item >3;
})
console.log(index);

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

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

相关文章

defineProperty 与 proxy 详解

目录 前言 definePropety Setters 和 Getters watch API proxy watch API 优化 Vue3.0 里为什么要用 Proxy 替代 defineProperty ? Proxy 和 Object.defineProperty 的区别&#xff1f; 前言 我们或多或少都听过“数据绑定”这个词&#xff0c;“数据绑定”的关键在于…

#新版Onenet云平台使用(ESP8266 AT指令上报数据以及公网MQTT服务器连接测试)

1.上云方式&#xff1a;MQTT 参考&#xff1a; 新版ONENET物联网开放平台ATMQTT指令连接_at指令连接onenet的mqtt-CSDN博客https://blog.csdn.net/lilbye/article/details/131770196 ESP8266-01s入门&#xff1a;AT指令讲解、上云与MQTT通信教程-物联沃-IOTWORD物联网https:…

七:ReentrantReadWriteLock —— 读写锁

目录 1、ReentrantReadWriteLock 入门1.1、概念1.2、案例1.2.1、写写互斥1.2.2 锁降级 2、ReentrantReadWriteLock 源码解析2.1、属性2.2、构造方法2.3、内部类2.4、读写状态的设计 —— 按位切割使用2.5、【写锁】加锁方法 lock() —— ReentrantReadWriteLock.WriteLock2.4.1…

力扣:49. 字母异位词分组

知识点&#xff1a; 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效&#xff0c;通过散列函数&#xff0c;数据元素将被更快地定位&#xff1a; 1. 直接寻址法&#xff1a;取关键字或关键字的某个线性函数值为散列地址。即H&#xff08;key&#xff09;key或H&a…

蓝桥杯物联网竞赛_STM32L071_16_EEPROM

仍然是没有考过的知识点 朴素的讲就是板子中一块不会因为断电重启而导致数值初始化的一片地址 要注意的是有时候容易把板子什么写错导致板子什么地址写坏了导致程序无法烧录&#xff0c;这个时候记得一直按flash键烧录&#xff0c;烧录时会报错&#xff0c;点击确定&#xff0…

linux的线程概念

目录 1.原理 2.线程的周边概念 3.创建线程的接口 1.pthread_create 2.pthread_join 3.pthread_detach 4.终止线程 5.C11封装的多线程库 4.线程库的大概结构 5.__thread&#xff08;只能修饰内置类型&#xff09; 6.线程的互斥 1.了解原理 2.加锁 1.接口 2.代码示…

机器学习深度学习中的上采样技术

上采样技术&#xff0c;也称为增取样或内插&#xff0c;是信号处理和图像处理中常用的技术&#xff0c;用于增加信号或图像的采样率或分辨率&#xff0c;从而使其变得更大。 在图像处理中&#xff0c;上采样主要用于放大图像&#xff0c;增加图像的尺寸或分辨率。 上采样的实…

【网络编程】Linux网络内核结构以及分布剖析

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之Linux网络内核结构以及分布剖析&#xff0c;在这篇文章中&#xff0c;你将会学习到在Linux内核中如何实现网络数据的输入和输出的&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助…

如何应对Android面试官 -> ActivityManagerService 是怎么启动的?

前言 本章主要讲解下 什么是 AMS&#xff0c;以及它是如何启动的&#xff1b; SystemServer SystemServer 通过按下电源键接通电源之后就会启动 BootRoom&#xff0c;BootRoom 就会拉起一个 BootLoader 程序&#xff0c;此程序会拉起 Linux Kernel「系统内核」&#xff0c;我们…

树 和 二叉树

目录 一、树 1、初识树 2、树的一些概念 3、树的表示形式 二、二叉树 1、初识二叉树 2、两种特殊的二叉树 3、二叉树的性质 4、二叉树的遍历 5、实现一棵二叉树 6、二叉树题目&#xff08;没代码的后面会给补上&#xff09; 一、树 1、初识树 &#xff08;1&…

【Java】图片处理工具ImageMagick简介及其在Java中的应用

ImageMagick是一款强大的图像处理软件&#xff0c;它可以用于创建、编辑、合并和转换图像。它支持超过200种图像格式&#xff0c;并且提供了丰富的功能&#xff0c;包括图像缩放、旋转、裁剪、加水印、添加特效等。ImageMagick还支持批量处理图像&#xff0c;可以通过命令行或者…

浅谈网络代理 proxy

总会有各种各样需要用到代理的场景 比如批量提交漏洞、批量注册、批量扫描.... 简单总结一下 代理简介 IP 代理是一种网络技术&#xff0c;通过这种技术&#xff0c;用户可以隐藏其真实的 IP 地址&#xff0c;并使用另一个 IP 地址来代表自己进行互联网上的活动。IP 代理通常由…

xhci 数据结构

xhci 数据结构 xhci 数据结构主要在手册上有详细的定义&#xff0c;本文根据手册进行归纳总结&#xff1a; 重点关注的包括&#xff1a; device contexttrb ringtrb device context设备上下文 设备上下文数据结构由xHC管理&#xff0c;用于向系统软件报告设备配置和状态信息。…

《CSS 知识点》仅在文本有省略号时添加 tip 信息

html <div ref"btns" class"btns"><div class"btn" >这是一段很短的文本.</div><div class"btn" >这是一段很短的文本.</div><div class"btn" >这是一段很长的文本.有省略号和tip.<…

MongoDB副本集部署(windows)

环境准备 本教程演示mongodb4.4 副本集部署&#xff08;一主两从&#xff0c;伪分布式&#xff09; 节点配置主节点localhost:27017从节点1localhost:27018从节点2localhost:27019 每一个节点&#xff08;实例&#xff09;都创建对应的数据文件&#xff08;data&#xff09;…

MySQL中的存储过程详解(上篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号&#xff0c;就代表可写可不写 目录 1.认识存储过程 1.1 存储过程的作用 1.2 存储过程简介…

OpenHarmony轻量系统开发【13】鸿蒙小车开发

13.1 小车介绍 基于鸿蒙系统 Hi3861 的WiFi小车 首先&#xff0c;我们得有一套WiFi小车套件&#xff0c;其实也是Hi3861 加上电机、循迹模块、超声波等模块。 小车安装完大概是这样&#xff1a; 13.2 电机驱动 我们这里先只做最简单的&#xff0c;驱动小车的电机&#xff…

ModuleNotFoundError: No module named ‘llama_index.readers“解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Centos7,部署etcd集群,基于二进制包,https安全通讯

由于etcd集群https通讯&#xff0c;所以需要自建CA数字证书&#xff0c;学习使用https部署etcd集群前&#xff0c;可以先完成一下&#xff0c;基于http通信的etcd集群&#xff1a; 关于CA原理以及工作可以阅读&#xff0c;以下两篇文章&#xff1a; CA工作原理 对称加密与非对…

【洛谷题解】 CF1468E Four Segments

分析 我们可以知道&#xff0c;如果两个相对的边所在的棍子的长度分别为 a a a 和 b b b&#xff0c;那么这两条边最大只能就为 min ⁡ ( a , b ) \min(a,b) min(a,b)。所以如果让最长的棍子&#xff08;设其长度为 a a a&#xff09;与最短的棍子&#xff08;设其长度为 …