# JavaScript 使用splice()方法添加和删除数组元素

**URL:** <https://www.isharkfly.com/t/javascript-splice/8526>\
**Category:** 前端\
**Created:** [October 23, 2012, 2:33am UTC](https://www.isharkfly.com/t/javascript-splice/8526 "2012-10-23T02:33:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 23, 2012, 2:33am UTC](https://www.isharkfly.com/t/javascript-splice/8526/1 "2012-10-23T02:33:55Z")

</div>

Array 对象的splice()方法提供一种在数组任意位置添加、删除数组元素的方法。

语法如下：`MyArray.splice(start,delete,arg3,…,argN);`参数说明如下：

当参数 delete 为0 时，不执行任何删除操作；

当参数 delete 非0 时，在调用此方法的数组中删除下标从start 到shart+delete 的数组元素，其后的数组元素的下标均减小delete；

如果在参数 delete 之后还有参数，在执行删除操作之后，这些参数将作为新元素添加到数组中由start 指定的开始位置，原数组该位置之后的元素往后顺移。

考察如下的代码：[code]\<! DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0//EN”  
“[http://www.w3.org/TR/REC-html140/strict.dtd](http://www.w3.org/TR/REC-html140/strict.dtd)”\>

Sample Page!   
 [/code]程序运行结果如图所示。

![](https://www.isharkfly.com/images/transparent.png)

其中核心语句：`MyArray.splice(1,0);
MyArray.splice(1,1);
MyArray.splice(1,1,"New1","New2");`第一句中参数delete 为0，不执行任何操作，MyArray 数组保持不变：`MyArray=["First","Second","Third","Forth"];`第二句参数delete 不为0（=1），执行删除下标为start（=1）到start+delete（=2）之间的数组元素，即MyString[1]=Second，其后的数组元素往前挪动delete（=1）位，此时MyArray 数组变为：`MyArray=["First","Third","Forth"];`第三句在继续执行一次第二句的删除操作（删除MyString[1]=Third）基础上，将以参数传入的“New1”和“New2”元素作为数组元素插入到start（=1）指定的位置，原位置上的数组元素顺移，相当于执行两个步骤：`MyArray=["First","Forth"];
MyArray=["First","New1","New2","Forth"];`注意：Array 对象的splice()方法在Navigator 4 中存在一个缺陷，当删除数组中指定的元素时，返回的不是删除了指定元素的数组而是该指定的元素，同时，如果数组中没有元素被删除，返回的不是空数组而是null。
