今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章。

生命不息,更新不止!

今天我们就不那么多废话了,直接干货开始。

我们在《Javascript数组系列一之栈与队列》中描述我们是如何利用 push、pop、shift、unshift方法进行数组单个元素的添加与删除。

但是光有单个元素的删除恐怕难以满足我们的应用场景,那么那么如何进行数组元素的批量操作?let's go!

数组的增删改

slice

该方法会复制数组的一部分从我们选择到开始到结束位置,返回一个新数组。

slice 方法接受两个可选到参数:一个复制数组到开始索引,一个是复制数组到结束索引。

//语法
array.slice(begin, end);
//案例
const friends = ["大B哥", "二B哥", "三B哥", "我"];
const friends1 = friends.slice();
const friends2 = friends.slice(1);
const friends3 = friends.slice(1, 3);
const friends4 = friends.slice(-1);
const friends5 = friends.slice(-3, -1);
console.log(friends1); //["大B哥", "二B哥", "三B哥", "我"]
console.log(friends2); //["二B哥", "三B哥", "我"]
console.log(friends3); //["二B哥", "三B哥"]
console.log(friends4); //["我"]
console.log(friends5); //["二B哥", "三B哥"]

slice 方法主要就是复制数组到一部分,然后返回新的数组,所以用法也相对简单一些。但是还是有一些我们值得注意到地方。

  • 数组始终都是从左到右到复制顺序,即使参数是负数也是如此
  • 没有接受任何参数的时候,会复制整个数组
  • 一个参数的时候,是从当前参数的索引位置到数组到结束
  • 两个参与时,采用左闭右开到原则,即包含开始,但不包含结束
  • 当参数为负数时,会从数组的末尾开始计算

以上就是 slice 方法值得我们注意的地方,如果大家掌握了这些知识,那么将会很好的使用它。

最后,我们来看一看它的兼容问题

splice

splice 方法一个数组中最强大的方法,不仅可以对数组进行元素对添加,对数组元素对删除,对数组元素的替换,可以说它集百家与一身,它会直接修改原数组,返回删除的元素。

那么我们就来好好的看看它是如何进行数组的添加、删除与替换工作。

splice 方法的参数传入数量不的不同形成的效果也会不同。

首先它接受三个参数或甚至更多,除了开始位置索引 start 参数以外,其余全是可选参数。

start:删除数组元素的开始索引

count:需要删除元素的个数

item1,item2…:插入数组的元素

//语法
array.splice(start, count, item1, item2, ...)

因为 splice 参数变化多样,我们主要从三个方面来展示 splice 的用法。

1. 如何删除数组元素

传递一个参数的时候,数组会删除从给定的索引到数组结束的所有元素,原数组会被修改,返回删除的数组

//删除元素
const numbers = [1, 2, 3, 4, 5];
const removes = numbers.splice(2);
console.log(numbers); //[1, 2]
console.log(removes); //[3, 4, 5]

如何删除指定个数的数组?如我们只想删除第6个元素等等…
我们添加第二个参数 count 即可,元素的索引是从0开始,也就是说 start 参数是从 0 开始的。

//删除第6个元素
const numbers = [1, 2, 3, 4, 5, 6, 7, 8];
const removes = numbers.splice(5, 1);
console.log(numbers); //[1, 2, 3, 4, 5, 7, 8]
console.log(removes); //[6] //删除第6,7位两个元素
const numbers = [1, 2, 3, 4, 5, 6, 7, 8];
const removes = numbers.splice(5, 2);
console.log(numbers); //[1, 2, 3, 4, 5, 8]
console.log(removes); //[6, 7]

已然明白,splice 方法是从 start 索引位置开始,删除 count 个元素。如何不删除元素呢?有些聪明的同学肯定已经知道那就是我们的 count 为 0 时,它就不会删除任何元素,这个也为我们后面如何添加与替换元素提供了前提条件。

2. 如何添加数组元素

如何添加一个元素,这会就要用到我们的第三个参数或者第四个,第五个等等,依次添加即可。

//指定在某个位置添加一个元素
const numbers = [1, 2, 3, 4, 5];
const removes = numbers.splice(2, 0, 'F');
console.log(numbers); //[1, 2, "F", 3, 4, 5]
console.log(removes); //[] //指定在某个位置添加多个元素
const numbers = [1, 2, 3, 4, 5];
const removes = numbers.splice(2, 0, 'A', 'B', 'C');
console.log(numbers); //[1, 2, "A", "B", "C", 3, 4, 5]
console.log(removes); //[]

因为不对数组进行任何的删除项,然后又在数组中插入一些元素,实现的数组的添加

3. 如何替换数组元素

替换的思路与删除仅仅多了一步把要插入掉位置元素给删除掉。

//替换第2,3位的元素
const numbers = [1, 2, 3, 4, 5];
const removes = numbers.splice(2, 2, 'A', 'B');
console.log(numbers); //[1, 2, "A", "B", 5] console.log(removes); //[3, 4]

来看看 splice 方法的兼容性如何

到目前位置连续五篇文章,我们已经介绍了很多数组的一些方法,你会发现这些方法都是基于单个数组的增删改甚至是合并,没有数组与数组之间的一些方法,不过 Javascript 还是为我们提供了一个方法就是可以实现数组与数组之间的合并操作。

concat

用法非常简单,就是用于两个数组的合并,原有数组不发生改变,返回一个新的数组。

它接受的参数为数组或者是值类型,参数的个数为一个或者多个。

//语法
var newArray = array.concat(array1, array2...)
//连接两个数组
const numbers1 = ['1', '2', '3'];
const numbers2 = ['4', '5', '6'];
const newNumbers = numbers1.concat(numbers2);
console.log(numbers1); //["1", "2", "3"]
console.log(numbers2); //["4", "5", "6"]
console.log(newNumbers);//["1", "2", "3", "4", "5", "6"] //连接值类型
const numbers1 = ['1', '2', '3'];
const newNumbers = numbers1.concat('4');
console.log(newNumbers); //["1", "2", "3", "4"] //连接多个数组
const numbers1 = ['1', '2', '3'];
const numbers2 = ['4', '5', '6'];
const number3 = ['7'];
const newNumbers = numbers1.concat(numbers2, number3);
console.log(newNumbers);//["1", "2", "3", "4", "5", "6", "7"]

那么 concat 方法的兼容性如何呢?

总结

到目前位置数组的系列文章以及介绍完毕,我们系统以及完整的介绍了数组的一系列方法,通过一些例子介绍了每个用法,甚至我们把每个方法的很多用法都有提到,不说能够应对所有应用场景把,至少在日常的开发过程中足够使用了。

数组虽然说完了,但是我们的故事还没有说玩,欢迎持续关注。

关注我的微信公众号:六小登登,更多干货文章,欢迎一起交流。
人人都可以成为高手。我是一个会技术,又写干货的码农。欢迎勾搭。

系列文章列表:

  1. 《Javascript数组系列一之栈与队列》
  2. 《Javascript数组系列二之迭代方法1》
  3. 《Javascript数组系列三之迭代方法2》
  4. 《Javascript数组系列四之数组的转换与排序sort》
  5. 《Javascript数组系列五之增删改和强大的 splice()》

Javascript数组系列五之增删改和强大的 splice()的更多相关文章

  1. Javascript数组系列三之迭代方法2

    今天我们来继续 Javascript 数组系列的文章,上文 <Javascript数组系列二之迭代方法1> 我们说到一些数组的迭代方法,我们在开发项目实战的过程中熟练的使用可以大大提高我们 ...

  2. Javascript数组系列二之迭代方法1

    我们在<Javascript数组系列一之栈与队列 >中介绍了一些数组的用法.比如:数组如何表现的和「栈」一样,用什么方法表现的和「队列」一样等等一些方法,因为 Javascript 中的数 ...

  3. JavaScript之对数组中元素进行增删改

    JavaScript中数据类型无非是:简单类型+复杂类型,什么是简单什么又是复杂.从电脑物理存储上讲,简单就是所见即所得,你看见什么,电脑里面存的就只是什么,并不会因为一些关系(比如引用)而多出一部分 ...

  4. C# 数据操作系列 - 15 SqlSugar 增删改查详解

    0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...

  5. Django REST framework 五种增删改查方法

    Django-DRF-视图的演变   版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. 1 from .serializers impor ...

  6. Entity Framework 学习系列(4) - EF 增删改

    目录 写在前面 一.开发环境 二.创建项目 三.新增 1.单表新增 2.批量新增 3.多表新增 四.编辑 1.先查询,后编辑 2.创建实体,后编辑 五.删除 写在前面 在上一小节中,学习了如何 通过C ...

  7. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)

    本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...

  8. python 10min系列之实现增删改查系统

    woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...

  9. .Net程序员学用Oracle系列(12):增删改查

    1.插入语句 1.1.INSERT 1.2.INSERT ALL 2.删除语句 2.1.DELETE 2.2.TRUNCATE 3.更新语句 3.1.UPDATE 3.2.带子查询的 UPDATE 3 ...

随机推荐

  1. Python面试真题答案或案例

    Python面试真题答案或案例如下: 请等待. #coding=utf-8 #1.一行代码实现1--100之和 print(sum(range(1,101))) #2.如何在一个函数内部修改全局变量 ...

  2. 英语笔记3(git)

    一: To create a new branch and switch to it at the same time, you can run the git checkout command wi ...

  3. war包部署到腾讯云中报404的排错经历

    项目完成了部分功能,需要把项目放到公网上,方便演示讨论.本来以为挺简单的,直接将war包放到腾讯云服务器tomcat中,结果报错404,第一次碰到这种情况,于是想办法解决,花了一天的时间,终于解决了问 ...

  4. @@ITENTITY

    @@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量.一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头.sele ...

  5. NPM 安装速度慢,镜像修改

    今天安装gitbook的时候,竟然花了两个小时没有安装成功,大家在使用npm安装依赖的时候速度是不是经常慢的要死?最佳解决方案是手动更改镜像服务器地址, 强烈推荐阿里巴巴在国内的镜像服务器,执行下面命 ...

  6. 【朝花夕拾】Android性能篇之(一)序言及JVM

    序言        笔者从事Anroid开发有些年头了,深知掌握Anroid性能优化方面的知识的必要性,这是一个程序员必须修炼的内功.在面试中,它是面试官的挚爱,在工作中,它是代码质量的拦路虎,其重要 ...

  7. Java基础12:深入理解Class类和Object类

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  8. 想在Java中实现Excel和Csv的导出吗?看这就对了

    前言 最近在项目中遇到一个需求,需要后端提供一个下载Csv和Excel表格的接口.这个接口接收前端的查询参数,针对这些参数对数据库做查询操作.将查询到的结果生成Excel和Csv文件,再以字节流的形式 ...

  9. 基于 Nginx 的 HTTPS 性能优化

    前言 分享一个卓见云的较多客户遇到HTTPS优化案例. 随着相关浏览器对HTTP协议的“不安全”.红色页面警告等严格措施的出台,以及向 iOS 应用的 ATS 要求和微信.支付宝小程序强制 HTTPS ...

  10. ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

    应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...