1. 程式人生 > >JavaScript陣列的操作方法(concat、slice和splice)

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

替換

可以向指定位置插入任意數量的項,並刪除任意數量的項,只需要指定三個引數:起始位置,要刪除的項數和要插入的任意數量的項。
例如:

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. 要插入多項時,直接在引數後面新增其他項,也可以直接新增一個數組。