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
替换
可以向指定位置插入任意数量的项,并删除任意数量的项,只需要指定三个参数:起始位置,要删除的项数和要插入的任意数量的项。
例如:
var colors = new Array("red", "blue", "black", "pink");
alert(colors.splice(2, 1, "green", "purple")); // black
alert(colors); // red,blue,green,purple,pink
注意:
- splice( ) 方法始终都会返回一个数组,这个数组中包含从原始数组中删除的项(如果没有删除则返回空数组)。
- slice( ) 方法不会影响原始数组,而 splice( ) 方法会影响原始数组。
- splice( ) 方法删除项时包含起始位置项,添加项时添加在起始位置之前。
- 要插入多项时,直接在参数后面添加其他项,也可以直接添加一个数组。