splice()方法功能非常多,可以说是一个“多功能”方法。

 项的替换

splice()方法用来替换数组中的指定项。

比如数组:

var arr = ["A", "B", "C", "D", "E", "F", "G"];

我们调用 arr.splice()方法,它在英语中是“拼接”的意思:

arr.splice(3 , 2 , "X" , "Y" , "Z");

这条语句的意思是:从数组 arr 的下标为 3 的项开始删除连续的 2 项,并在此插入新的项"X","Y","Z"。

即这条语句删除了一些项,又增加了一些项,实现了项的替换。输出 arr:

console.log(arr); // ["A", "B", "C", "X", "Y", "Z", "F", "G"]

在指定位置插入项

调用 splice()方法,如果不删除任何项(即删除的项的个数为 0)仅插入新项,此时即可实现在指定的位

置插入项的功能。比如:

var arr = ["A", "B", "C", "D"];

arr.splice(2 , 0 , "X" , "Y" , "Z");

console.log(arr); // ["A", "B", "X", "Y", "Z", "C", "D"]

当需要在数组的非头尾位置插入项,一定要想起使用 splice()函数。

删除项

使用 splice()方法时,如果删除一些项,但是不插入任何新项,此时就实现了删除数组项的功能。比如:

var arr = ["A","B","C","D","E","F","G"];

arr.splice(2,4); // 没有设置需要插入的项,仅删除 4 项

console.log(arr); // ["A", "B", "G"]

特别的,如果我们没有指定需要删除项的个数,此时将删除从开始项开始的所有项:

var arr = ["A","B","C","D","E","F","G"];

arr.splice(2); //从下标为 2 的项开始删除所有项

console.log(arr); // ["A", "B"]

语句 arr.splice(2)并没有指定需要删除多少项,所以它将删除从下标为 2 的项开始的所有后续项。

slice() 方法

一个大数组中,如果我们想取其中的一部分,即提炼出它的“子数组”,要使用 slice()方法。注意,splice()

方法和 slice()方法拼写非常类似,但功能截然不同,参数的意义也截然不同。例如:

var arr1 = ["A","B","C","D","E","F","G"];

var arr2 = arr1.slice(3,5);

console.log(arr1); // ["A", "B", "C", "D", "E", "F", "G"]

console.log(arr2); // ["D", "E"]

语句 arr.slice(3,5)表示从 arr 数组的下标为 3 的项开始提取,到下标为 5 的项结束,但不包括下标为 5这项,将提取出的项组成新的数组返回。即 arr 数组的下标为 3、4 的两项将被提取为数组 arr2,而 arr1 自身

不会有任何变化。

从控制台输出可以看出,slice()函数不会改变原数组,这和 splice()截然不同!splice 无论进行何种操

作,一定会改变原数组的。

slice 的公式如下:

arr.slice(a , b);

数字 a 表示从下标为几的项开始截取,而 b 表示到下标为几的项结束,但不包括这项。因为 slice 返回的

子数组,不包括下标为 b 的项,所以子数组的长度是 b - a。比如上例,arr.slice(3,5)得到的数组就是只有

2 项,参数 5-3 也等于 2。

slice()如果不提供第二个参数,则表示从指定项开始,提取所有后续所有项作为子数组,比如:

var arr1 = ["东", "西", "南", "北"];

var arr2 = arr1.slice(1);

console.log(arr2); // ["西", "南", "北"]

特别的,slice()方法的参数允许为负数,表示数组的倒数第几项,比如:

var arr1 = ["A", "B", "C", "D", "E", "F", "G"];

var arr2 = arr1.slice(-4);

console.log(arr2); // ["D", "E", "F", "G"]

程序表示截取数组的倒数 4 项作为新的数组。注意,我们不要理解为“从下标为-4 的项开始”,因为数组

的下标只有正数没有负数,所以这里的符号只是一个语法符号,表示倒数第 4 项。倒数的时候,个数从 1 开始。

concat() 方法

使用 concat()函数可以合并多个数组,例如:

var arr1 = [1, 2, 3, 4];

var arr2 = [5, 6, 7, 8];

var arr3 = [9, 10, 11];

var arr = arr1.concat(arr2 , arr3);

console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

concat()方法必须由某一个数组调用,参数可以是无限多个数组,这些数组将按顺序合并为 1 个数组。数

组 arr1 不会被改变。