JavaScript数组的操作方法(concat、slice和splice)

ECMAScript 为操作数组中的项提供了很多方法,其中最常用的有:concat( ) 、slice( ) 和 splice( )


concat ( )

concat ( ) 方法可以基于当前数组中的项创建一个新的数组。具体来说,这个方法会先创建一个当前数组的副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。

在没有给它传参的情况下,它仅复制当前的数组并返回副本。如果给它传递一或多个数组,则该方法会将这些数组中的每一项都添加到副本数组中。如果传递的值不是数组,则直接被添加到数组的末尾。原来的数组保持不变。

例如:

var colors = new Array("red", "blue", "green");
var colors1 = colors.concat()
var colors2 = colors.concat("black", "pink");
alert(colors1)  // red,blue,green
alert(colors2)  // red,blue,green,black,pink
alert(colors)   // red,blue,green

slice ( )

slice( ) 方法可以基于当前数组中一个或多个项创建一个新数组。slice( ) 方法可以接收一个或两个参数,即要返回项的起始和结束位置(基于 0)。在只有一个参数的情况下,该方法返回从该参数指定位置开始到当前数组末尾的所有项;如果有两个参数,该方法则返回起始和结束位置之间的项(不包括结束位置)。该方法同样不会影响原始数组。

另外,slice( ) 方法参数中有负数,则用数组长度加上该数来确定相应的位置。如果起始位置大于结束位置或数组长度,则返回空数组。

例如:

var colors = new Array("red", "blue", "green", "black", "pink");
var colors1 = colors.slice(2)
var colors2 = colors.slice(1, 3);
var colors3 = colors.slice(-4, -2);
var colors4 = colors.slice(6, 7);
alert(colors)   // red,blue,green,black,pink
alert(colors1)  // green,black,pink
alert(colors2)  // blue,green
alert(colors3)  // blue,green
alert(colors4)  // 返回空数组

splice( )

splice( ) 是最常用的数组方法,也是功能最强大的数组方法了。他的用法有很多,可以用它来实现删除、插入和替换

删除

可以删除任意数量的项,并返回删除了的项,只需要指定两个参数:要删除的第一项的位置(包含这一项)和要删除的项数。
例如:

// 删除数组前两项
var colors = new Array("red", "blue", "green", "black", "pink");
alert(colors.splice(0,2))   // red,blue
alert(colors)		// green,black,pink

插入

可以向指定位置插入任意数量的项,只需要提供三个参数:起始位置,0(要删除的项数)和要插入的项。 如果要添加多个项,则直接在后面添加参数,也可以直接添加一个数组。添加的项在起始位置之前。
例如:

var colors = new Array("red", "blue");
var newColors = new Array("green", "black", "pink")
colors.splice(0, 0, "purple")	// 返回空(因为没有删除)
colors.splice(1,0,newColors)
alert(colors)	// purple,green,black,pink,red,blue

替换

可以向指定位置插入任意数量的项,并删除任意数量的项,只需要指定三个参数:起始位置,要删除的项数和要插入的任意数量的项。
例如:

扫描二维码关注公众号,回复: 4512761 查看本文章
var colors = new Array("red", "blue", "black", "pink");
alert(colors.splice(2, 1, "green", "purple"));  // black
alert(colors);  // red,blue,green,purple,pink

注意:

  1. splice( ) 方法始终都会返回一个数组,这个数组中包含从原始数组中删除的项(如果没有删除则返回空数组)。
  2. slice( ) 方法不会影响原始数组,而 splice( ) 方法会影响原始数组。
  3. splice( ) 方法删除项时包含起始位置项,添加项时添加在起始位置之前。
  4. 要插入多项时,直接在参数后面添加其他项,也可以直接添加一个数组。

猜你喜欢

转载自blog.csdn.net/TalonZhang/article/details/84781155