最新前端知识尽在ASEOE,喜欢就收藏本站吧! 导航:HTML5CSS3JS移动端JQ插件

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行为。

参阅

Array.slice( )