Array.splice( )
插入、删除或替换数组的元素可用性
JavaScript 1.2; JScript 5.5; ECMAScript v3
语法
array.splice(start, deleteCount, value, ...)
参数
- start
-
开始插入和(或)删除的数组元素的下标。
- deleteCount
-
从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
- value, ...
-
要插人数组的零个或多个值,从start所指的下标处开始插入。
返回值
如果从array中删除了元素,返回的是含有被删除的元素的数组。但是要注意,由于存在—个bug,因此在JavaScriptl.2的Netscape实现中,返回的并不总是数组。
描述
方法splice()将删除从start开始(包括start所指的元素在内)的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。位于插入或删除的元素之后的数组元素都会被移动,以保持它们与数组其他元素的连续性。注意, 虽然spllce()方法与slice()方法名字相似,但作用不同,方法splice()直接修改数组。
示例
读了下面的例子,就很容易理解splice()的操作了:
var a = [1,2,3,4,5,6,7,8] a.splice(4); // 返回 [5,6,7,8]; a is [1,2,3,4] a.splice(1,2); // 返回 [2,3]; a is [1,4] a.splice(1,1); // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4] a.splice(1,0,2,3); // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []
Bug
方法splice()假定在各种情况下均返回一个包含已删除元素的数组。但是,在 Netscape的JavaScript 1.2解释器中,如果删除的是单个元素,那么该方法返回的是 元素,而不是包含那个元素的数组。如果没有删除任何元素,它不是返回一个空数组, 而是什么都不返回。只要把语言版本明确地设置为1.2,JavaScript的Netscape实现 都有这种bug行为。