javascript中容易混淆的两个数组的操作方法slice()和splice()

javascript中容易混淆的两个数组的操作方法slice()和splice()

1、前言

今天在看《javascript权威指南》的时候,在看到第七章数组的操作方法时,突然看到一个地方觉得自己特别容易忘记,两个数组的操作方法slice()和splice()的区别,不知道为什么每次看完之后自己都用代码进行测试了, 但是过了一阵子之后,又忘了。当然,我只是个人的看法,俗话说得好,好记性不如烂笔头,所以,这就是这篇博客的由来了。

2、概念

这里感觉权威指南的解释很清晰,所以,就借用了其中的解释。

A、slice()

Array.slice()方法返回了指定数组的一个片段或者子数组。

它的两个参数分别指定了片段开始和结束的位置。

返回的数组包含第一个参数指定的位置和所有到但不包含第二个参数指定的位置之间的所有的数组元素。

如果只是指定了一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。如果参数中出现了负数,它表示相对于数组中最后一个元素的位置

这里我们打个比方,比如说参数是-1,则就是指定了最后的一个元素,而参数是-3的时候,就是指定了倒数第三个参数。

注意,slice()是不会修改所调用的数组的。

为了能更方便地理解这个概念,我们举几个例子:

B、splice()

Array.splice()方法是在数组中插入或者删除元素的通用方法。

跟slice()和concat()不同的是,splice()会修改调用的数组。

注意,splice()和slice()拥有非常相似的名字,但是它们的功能却有本质上的区别,当然,这个也就是我今天写这篇博客的理由了。

splice()能够从数组中删除元素,插入元素到数组中或者同时完成这两种操作。在插入或者删除点之后的元素数组会根据需要增加或者减少它们的索引值,因此数组的其他部分仍然会保持连续的。

删除元素的情况

splice()的的第一个参数指定了插入或者删除的起始位置。第二个参数指定了应该从数组中删除的元素的个数。

如果省略了第二个参数,从起点开始到数组结尾的所有元素都将被删除。

splice()返回的是一个由被删除的元素组成的数组,当然,如果没有所要删除的元素,这里就会返回一个空数组。

插入元素的情况

splice()的前面两个参数指定了需要删除的数组元素。紧随其后的任意个数的参数指定了需要插入到数组中的元素,记住,是从第一个参数指定的位置开始插入的。

注意:区别与concat(),splice()会插入数组本身而并非数组的元素。