JavaScrip中对于数组的操作的方法(!!是否改变原数组)

1. push()

  • 功能:向数组的末尾添加一个或多个元素,并返回新数组的长度。(改变原数组)
  • 示例
let arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]

2. pop()

  • 功能移除数组的最后一个元素,并返回该元素。(改变原数组)
  • 示例
let arr = [1, 2, 3];
let removedElement = arr.pop(); // 3
console.log(arr); // [1, 2]

3. shift()

  • 功能移除数组的第一个元素,并返回该元素,数组的长度会减 1。(改变原数组)
  • 示例
let arr = [1, 2, 3];
let removedElement = arr.shift(); // 1
console.log(arr); // [2, 3]

4. unshift()

  • 功能:向数组的开头添加一个或多个元素,并返回新数组的长度。(改变原数组)
  • 示例
let arr = [2, 3];
let a = arr.unshift(1); 
console.log(a); // 3
console.log(arr);// [1, 2, 3]

5. concat()

  • 功能:合并两个或多个数组,返回一个新的数组。(生成一个新数组)
  • 示例
let arr1 = [1, 2];
let arr2 = [3, 4];
let newArr = arr1.concat(arr2); // [1, 2, 3, 4]

6. slice()

  • 功能:返回数组的一个浅拷贝,包含从 start 索引到 end 索引(不包括 end)。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 3); // [2, 3]

7. splice()

  • 功能:从数组中添加、删除或替换元素,直接修改原数组(不改变原数组,生成一个新数组)
  • 示例:(从索引2中开始删除2个元素,并插入6、7。)
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 2, 6, 7); // 从索引 2 开始删除 2 个元素,并插入 6 和 7
console.log(arr); // [1, 2, 6, 7, 5]

8. indexOf()

  • 功能:返回数组中第一个匹配的元素的索引,如果没有找到则返回 -1。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let index = arr.indexOf(3); // 2

9. includes()

  • 功能:判断数组是否包含指定的元素,返回 truefalse(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let contains = arr.includes(3); // true

10. map()

  • 功能返回一个新数组,数组中的每个元素是通过调用提供的函数进行转换后的值。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3];
let newArr = arr.map(x => x * 2); // [2, 4, 6]

11. filter()

  • 功能:返回一个新数组,包含所有通过提供的测试函数的元素。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4, 5];
let filteredArr = arr.filter(x => x > 3); // [4, 5]

12. reduce()

  • 功能:对数组中的每个元素执行指定的操作,并返回一个单一的结果(如求和)。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let sum = arr.reduce((acc, curr) => acc + curr, 0); // 10

13. reduceRight()

  • 功能:与 reduce() 类似,但从数组的右侧开始执行(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let sum = arr.reduceRight((acc, curr) => acc + curr, 0); // 10

14. forEach()(可以不修改原数组,也可以通过索引方式改变原数组。

  • 功能:对数组中的每个元素执行指定的回调函数,但不会返回新数组。
  • 示例
let arr = [1, 2, 3];
arr.forEach(x => console.log(x)); // 1 2 3

15. some()

  • 功能:测试数组中是否至少有一个元素满足提供的测试函数,返回 truefalse(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3];
let result = arr.some(x => x > 2); // true

16. every()

  • 功能:测试数组中是否所有元素都满足提供的测试函数,返回 truefalse(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3];
let result = arr.every(x => x > 0); // true

17. sort()

  • 功能:对数组的元素进行排序,默认按字典顺序排序,可以提供比较函数进行自定义排序。(改变原数组)
  • 示例
let arr = [3, 1, 2];
arr.sort(); // [1, 2, 3]let arr2 = [3, 1, 2];
arr2.sort((a, b) => a - b); // [1, 2, 3]

18. reverse()

  • 功能颠倒数组中元素的顺序,直接修改原数组。(改变原数组)
  • 示例
let arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]

19. find()

  • 功能返回数组中第一个满足提供的测试函数的元素。如果没有找到返回 undefined(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let result = arr.find(x => x > 2); // 3

20. findIndex()

  • 功能:返回数组中第一个满足测试函数的元素的索引。如果没有找到返回 -1。(不改变原数组,生成一个新数组)
  • 示例
let arr = [1, 2, 3, 4];
let index = arr.findIndex(x => x > 2); // 2(3的index是2)

21. flat()

  • 功能将多维数组“拉平”,返回一个新的数组,默认一层深度,可以通过参数指定深度。(改变原数组)
  • 示例
let arr = [1, [2, [3, 4]]];
let newArr = arr.flat(2); // [1, 2, 3, 4]

22. flatMap()

  • 功能:首先对数组中的每个元素执行指定的函数,然后将结果“拉平”一层并返回。(改变原数组)
  • 示例先执行map,再执行flat
let arr = [1, 2, 3];
let newArr = arr.flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]

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

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

相关文章

C语言基本知识复习浓缩版:标识符、函数、进制、数据类型

C语言基本知识复习浓缩版:标识符、函数、进制、数据类型 【c语言期末复习3小时速成【完整全集】期末速成含考试题c语言期末速成突击复习C语言补考C语言期末大一】 B站看到的复习C语言视频,感觉非常棒,就跟着进行了一下学习。众所周知&#…

GMDH自组织网络模型时间序列预测,可预测未来

GMDH自组织网络模型时间序列预测,可预测未来 目录 GMDH自组织网络模型时间序列预测,可预测未来效果一览基本介绍模型构建程序设计学习总结参考资料 效果一览 基本介绍 GMDH自组织网络模型是自组织数据挖掘中的一种模型方法,是基于计算机科学和…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

开源靶场1

我来为您介绍一些知名的开源漏洞靶场平台: DVWA (Damn Vulnerable Web Application) 最流行的 Web 漏洞靶场之一包含 SQL 注入、XSS、文件包含等常见漏洞基于 PHP MySQL适合 Web 安全入门学习 WebGoat OWASP 开源项目基于 Java包含大量 Web 安全漏洞练习提供详细的教程和解…

Linux/Ubuntu/银河麒麟 arm64 飞腾FT2000 下使用 arm64版本 linuxdeployqt 打包Qt程序

文章目录 一、前言二、环境三、准备1、下载Linuxdeployqt源码2、下载Appimagetool-aarch64.AppImage四、编译linuxdeployqt1.配置环境变量2.编译linuxdeployqt五、安装patchelf六、配置Appimagetool七、打包Qt程序重要提示:测试启动应用八、其他九、最后一、前言 因为项目需要…

OpenCV相机标定与3D重建(49)将视差图(disparity map)重投影到三维空间中函数reprojectImageTo3D()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将视差图像重投影到3D空间。 cv::reprojectImageTo3D 是 OpenCV 库中的一个函数,用于将视差图(disparity map&#xff09…

Python 通过命令行在 unittest.TestCase 中运行单元测试

文章目录 unittest 模块简介编写单元测试在命令行中运行所有测试在命令行中运行单个测试使用装饰器跳过测试总结常用断言方法 unittest 模块简介 unittest是Python标准库中的一个模块,用于编写和运行单元测试。它提供了一个单元测试框架,使得编写测试用…

Rabbitmq Fanout如何保证不重复消费及应用场景

rabbitmq fanout业务场景,一个交换机对应多个队列,不会重复消费吗 在 RabbitMQ 中,使用 Fanout 类型的交换机时,确实可以将一个交换机绑定到多个队列。每当有消息发布到这个交换机时,交换机会把消息广播到所有绑定的队…

pg数据库运维经验2024

这篇文章主要是讲pg运维常见问题,两三年见一次的疑难杂症就不说了。 主要是技术性运维总结,主打通俗易懂和快速上手,尽量避免源码层面等深入分析。 SQL性能与执行计划 执行计划突变 pg官方不支持hint功能,并且计划永远不支持&…

缓存-Redis-常见问题-缓存击穿-永不过期+逻辑过期(全面 易理解)

缓存击穿(Cache Breakdown) 是在高并发场景下,当某个热点数据在缓存中失效或不存在时,瞬间大量请求同时击中数据库,导致数据库压力骤增甚至崩溃的现象。为了解决这一问题,“永不过期” “逻辑过期” 的策略…

Hadoop 实战笔记(一) -- Windows 安装 Hadoop 3.x

环境准备 安装 JAVA 1.8 Java环境搭建之JDK下载及安装下载 Hadoop 3.3.5 安装包 Hadoop 下载:https://archive.apache.org/dist/hadoop/common/ 一、JAVA JDK 环境检查 二、Hadoop(HDFS)环境搭建 1. 解压安装文件 hadoop-3.3.5.tar 2. 配置环境变量 HADOOP_HO…

点赞模块的实现思路

在现代应用程序中,点赞功能已经成为用户互动的重要方式。无论是社交媒体平台、新闻网站还是在线论坛,点赞功能都可以帮助用户表达对内容的认可和喜爱。 点赞功能的基本原理是将用户对某个内容的赞记录到数据库中。当用户点击点赞时,系统会检…

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新,因为WordPress自带的文档编辑器不方便,以前用CSDN写作的时候,习惯了Typora。最近对比了…

【向量数据库】搜索算法

最近几年,一种叫做向量数据库的产品,正趁着AI的热潮开始崭露头角。伴随着AI时代的到来,向量将成为一种重要的数据形式,而传统数据库并不适合用来存储和检索向量数据,因此我们大约需要一种专门设计的数据库来处理这些问…

前端开发中常用的插件库

ahooks 一个高质量且可靠的React Hooks库。class-variance-authority(CVA) 是一个专注于解决CSS类管理问题的库。classnames 是一个在React开发中非常流行的JavaScript工具库,它可以帮助开发者有条件地连接类名字符串。copy-to-clipboard 一个…

什么是cline?

Cline 是一个功能强大的 AI 编程助手,专为 Visual Studio Code(VSCode)设计。它通过结合大语言模型(如 Claude、GPT 等)和工具链,帮助开发者自动化任务、生成代码、执行命令等。以下是对 Cline 的深入理解和…

启动tomcat出现的The JRE_HOME environment variable is not defined correctl

很久没使用Tomcat了,最近配置JDK 17 Tomcat 10,竟然报错 the JRE_HOME environment variable is not defined correctly很明显就是环境变量没有配置 JRE_HOME这个变量,但我明明是环境变量是配置了JAVA_HOME以及JRE_HOME这两个变量。 奇怪了…

ARM CCA机密计算安全模型之安全生命周期管理

安全之安全(security)博客目录导读 目录 一、固件启用的调试 二、CCA系统安全生命周期 三、重新供应 四、可信子系统与CCA HES 启用 CCA(机密计算架构)的安全系统是指 CCA 平台的实现处于可信状态。 由于多种原因,CCA 启用系统可能处于不…

[读书日志]从零开始学习Chisel 第八篇:Scala的集合(敏捷硬件开发语言Chisel与数字系统设计)

5.Scala的集合 Scala的集合包括数组,列表,集,映射,序列,元组,数组缓冲和列表缓冲等。 5.1 数组 5.1.1数组的定义 数组是计算机内一片地址连续的内存空间。数组元素类型可以是任意的,不同元素…

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群,zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志,发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法: 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…