JavaScript中数组常用的方法

news2024/11/16 12:04:22

文章目录

  • 前言
  • 常用数组方法
    • 1、 join( )
    • 2、push()与 pop()
    • 3、shift()与 unshift()
    • 4、sort()
    • 5、reverse()
    • 6、slice()
    • 7、splice()
    • 8、concat()


前言

本文讲解了js中数组常用的方法,如果本文对你有所帮助请三连支持博主。


在这里插入图片描述


下面案例可供参考

常用数组方法

1、 join( )

join()方法:将数组的元素组起一个字符串,以separator为分隔符,省略的话则默认用逗号为分隔符,该方法只接收一个参数:即分隔符。

	var arr = [1,2,3];
    console.log(arr.join());    // 1,2,3
    console.log(arr.join('-')); // 1-2-3
    console.log(arr); // 原数组不变

2、push()与 pop()

push()可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后的长度
pop()数组末尾移除最后一项,减少数组的length值,然后返回移除项

	 var arr =['a','b','c'];
     var arrPush= arr.push('d','e')
     console.log(arr);  // ['a', 'b', 'c', 'd', 'e']
     console.log(arrPush);//   5
     
     var arrPop = arr.pop()
     console.log(arrPop ); // e
     console.log(arr);  // ['a', 'b', 'c', 'd']

     var arrPop2  = arr.pop('c','d');
     console.log(arrPop2); // d
     console.log(arr);   // ['a', 'b', 'c']
    //pop()里面没有参数,即使有参数,也是删除最后一项

3、shift()与 unshift()

shift() 删除原数组第一项,并返回删除元素的值,如果数组为空则返回undefined

unshift() 将参数添加到原数组的开头,并返回数组的长度。

这组方法和上面的 push() 和 pop() 方法正好对应,一个是操作数组的开头,一个是操作数组的结尾

	 var arr = ['c','d','e']
     var arrUnshift = arr.unshift('a','b');
     console.log(arr);   // ['a', 'b', 'c', 'd', 'e']
     console.log(arrUnshift ); // 5

     var arrShift = arr.shift();
     console.log(arrShift );  //  a
     console.log(arr);   //  ['b', 'c', 'd', 'e']

4、sort()

sort:按升序排列数组项,即最小的值位于最前面,最大的值排在最后面

   var arr1 = ['d','b','a','c'];
   console.log(arr1.sort()); // ['a', 'b', 'c', 'd']

   arr2 = [13,24,51,3];
   console.log(arr2.sort()); // [13,24,3,51]
   console.log(arr2);  // [13,24,3,51] (原数组被改变)
	
//为了解决上述问题,sort()方法可以接收一个比较函数作为参数,以便于我们指定那个值位于哪个值的前面
	function fn(a,b){
		return a-b
	}
	console.log(arr2.sort(fn))//[3,13,24,51]

5、reverse()

反转数组项的顺序

 var arr = [13,54,3,10,87];
 console.log(arr.reverse()); // [87, 10, 3, 54, 13]
 console.log(arr);   //  [87, 10, 3, 54, 13] 原数组改变 */

6、slice()

slice()返回从原数组中指定开始下标到结束下标之间的项组成的新数组。

slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项。

 var arr = [1,3,5,7,9,11];
 var arrCopy = arr.slice(1);
 var arrCopy2 = arr.slice(1,4);
 var arrCopy3 = arr.slice(1,-2);
 var arrCopy4 = arr.slice(-4,-2);
 console.log(arr);     // [1,3,5,7,9,11] 
 console.log(arrCopy);  
 // [3,5,7,9,11] arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。
 console.log(arrCopy2); // [3,5,7]  arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。    
 console.log(arrCopy3); // [3,5,7] arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。 
 console.log(arrCopy4); // [5,7,9] arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。 


7、splice()

很强大的数组方法,它有很多种用法,可以实现删除,插入和替换。

  • 删除:可以删除任意数量的项,只需指定2个参数,要删除的第一项的位置和要删除的项数 例如:splice(0,2)会删除数组中的前两项
  • 插入(参数:起止,删除,增加):可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置,要删除的项数和要插入任意数量的项,插入的项数不必与删除的项数相等。例如,splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。
  • 替换(参数:起止,删除,替换):可以向指定位置插入任意数量的项,且同时删除任意数量的项 只需指定 3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
// 删除:可以删除任意数量的项,传入2个参数,要删除的第一项的位置和要删除的项数,
var arr = [1,3,5,7,9,11];
var arrRemoved = arr.splice(0,2);  
 // (0,2)表示删除前两项
console.log(arr); // [5,7,9,11];
console.log(arrRemoved); // [1,3]; 
 // 返回从原始数组中删除的项,若没有删除任何项,则返回空数组

// 插入:可以向指定位置插入任意数量的项,传3个参数,第一个为起始位置,第二个为要删除的项,第三个为要插入的项
var arrRemoved2 = arr.splice(2,0,4,6);   
// 例如,splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。
console.log(arr); //[5,7,4,6,9,11]
console.log(arrRemoved2);  // []

// 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,传入3个参数,第一个为起始位置,第二个要删除的项数,第三为要插入的任意数量的项,插入的项数不必与删除的项数相等
var arrRemoved3 = arr.splice(1,1,2,4);  
// 例如,splice (1,1,2,4)会删除当前数组位置 2 的项,然后再从位置 2 开始插入2和4。
console.log(arr);
  // [5,2,4,4,6,9,11]
console.log(arrRemoved3);
 // [7]


8、concat()

concat():将参数添加到原数组,这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组,在没有concat()方法,传递参数的情况下,它只是复制当前数组并返回副本。

  var arr  =[1,3,5,7];
  var arrCopy = arr.concat(9,[11,13]);
  console.log(arrCopy); // [1,3,5,7,9,11,13]
  console.log(arr); // [1,3,5,7]  原数组未被修改
 从上面测试结果可以发现:传入的不是数组,则直接把参数添加到数组后面
  如果传入的是数组,则将数组中的各个项添加到数组中。但是如果传入的是一个二维数组呢?
        
   var arr2 = [1,3,5,7];
   var arrCopy2 = arr2.concat([9,[11,13]]);
   console.log(arrCopy2);  // [1, 3, 5, 7, 9, Array(2)]
   console.log(arrCopy2[5]);  // [11, 13] */
//上述代码中,arrCopy2数组的第五项是一个包含两项的数组,也就是说concat方法只能将传入数组中的
//每一项添加到数组中,
// 如果传入数组中有些项是数组,那么也会把这一数组项当作一项添加到arrCopy2中


在这里插入图片描述

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

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

相关文章

代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II

一、参考资料复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/子集题目链接/文章讲解:https://programmercarl.com/0078.…

乐观锁、雪花算法、MyBatis-Plus多数据源

乐观锁、雪花算法、MyBatis-Plus多数据源e>雪花算法2、乐观锁a>场景b>乐观锁与悲观锁c>模拟修改冲突d>乐观锁实现流程e>Mybatis-Plus实现乐观锁七、通用枚举a>数据库表添加字段sexb>创建通用枚举类型c>配置扫描通用枚举d>测试九、多数据源1、创建…

电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析

青少年软件编程(图形化)等级考试试卷(二级) 一、单选题(共25题,共50分) 1. 一个骰子,从3个不同角度看过去的点数如图所示,请问5的对面是什么点数?( ) …

数据库(单表查询)

素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NOT NUL…

【C语言技能树】程序环境和预处理

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

一文掌握,单机Redis、哨兵和Redis Cluster的搭建,建议收藏

本篇文章讲述了 Redis 单机环境、主备、哨兵 Sentinel 模式以及 Redis Cluster 集群模式下的操作步骤,关于这些操作我们没必要死记硬背,只需要总结下来,下次使用直接拿出来就好。建议当作操作手册收藏。安装单实例 Redis编译Redis1.下载Redis…

小白都能学会的红帽(RedHat8)RHEL8系统安装实战

文章目录前言一. 实验环境二. 安装虚拟机三. 安装操作系统四. 系统安装成功后的操作总结前言 本文是应一位大佬的提议,建议我写写红帽系列,centos8已经不维护了,centos7 维护到2024年6月30日, 也就是明年的事情了,所以…

【Flutter入门到进阶】Dart基础篇---基于对比Java学习Dart

1 Dart语言特性 1.1 简介 1.1.1 说明 2011年10月,在丹麦召开的 GOTO 大会上,Google 发布了一种新的编程语言 Dart 。如同 Kotlin 和 Swift 的出现,分别是为了解决 Java 和 Objective-C 在编写应用程序的一些实际问题一样,Dart 的…

算法笔记(二)—— 认识N(logN)的排序算法

递归行为的时间复杂度估算 整个递归过程是一棵多叉树,递归过程相当于利用栈做了一次后序遍历。 对于master公式,T(N)表明母问题的规模为N,T(N/b)表明每次子问题的规模,a为调用次数,加号后面表明,除去调用之…

八股初始:RocketMQ

一、消息队列介绍 消息队列是什么 对于 MQ 来说,其实不管是 RocketMQ、Kafka 还是其他消息队列,它们的本质都是:一发一存一消费。 将 MQ 掰开了揉碎了来看,都是「一发一存一消费」,再直白点就是一个「转发器」。生产…

记一次上环境获取资源失败的案例

代码结构以及资源位置 测试代码 RestController RequestMapping("/json") public class JsonController {GetMapping("/user/1")public String queryUserInfo() throws Exception {// 如果使用全路径, 必须使用/开头String path JsonController.class.ge…

《计算机组成与设计》03. 计算机的算术运算

文章目录整数运算加法与减法乘法普通十进制乘法硬件中实现步骤例子乘法器的设计除法普通十进制除法硬件中实现步骤例子除法器的设计浮点数运算科学计数法、规格化数浮点表示单精度浮点数双精度浮点数移码表示法IEEE 754指数偏移值(exponent bias)规格化的…

计算机网络4:计算机网络体系结构

目录计算机网络体系结构1.网络模型2.每一层的代表含义2.1 OSI7层模型2.2 五层协议2.3 TCP/IP 四层协议3.数据在各层之间的传输过程4.为什么要进行分层计算机网络体系结构 1.网络模型 2.每一层的代表含义 2.1 OSI7层模型 (1)物理层:比特流–…

STC15中断系统介绍

STC15中断系统介绍✨本篇参考来源于STC官方stc15系列手册:538页- 589页。(文末提供该摘取部分的文档资料) 🎉在官方提供的手册资料中,一个系列一份手册,手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说…

彻底搞懂分布式系统服务注册与发现原理

目录 引入服务注册与发现组件的原因 单体架构 应用与数据分离

火遍全球的ChatGPT技术简介与主干网络代码

如果说当下最火的AI技术和话题是什么,恐怕很难绕开ChatGPT。各大厂商都在表示未来要跟进ChatGPT技术,开发在自然语言处理智能系统,可见其影响力。本篇博客追个热度,来简单的介绍下ChatGPT到底是一项什么技术,究竟如何完…

深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

【网络编程】Java中的Socket

文章目录前言socket是什么?Java中的SocketJava实现网络上传文件前言 所谓Socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用…

kafka入门篇

文章目录前言介绍概念与说明安装启动配置命令操作创建topic查看topic列表发送消息(启动一个生产者)消费消息(启动一个消费者)查询topic信息删除topic集群关机使用报错java连接示例前言 作为入门篇,主要是了解Kafka的概…

在windows下载安装netcat(nc)命令

参考文章 一、netcat(nc)下载 网盘下载 netcat(nc)下载地址:netcat 1.11 for Win32/Win64 二、配置环境变量 在Path里添加netcat的存放路径 参数 说明 -C 类似-L选项,一直不断连接[1.13版本新加的功能] -d 后台执行 -e prog 程序重定向&am…