diff options
Diffstat (limited to 'files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html')
-rw-r--r-- | files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html b/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html new file mode 100644 index 0000000000..2dcb909975 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html @@ -0,0 +1,165 @@ +--- +title: Array.prototype.splice() +slug: Web/JavaScript/Reference/Global_Objects/Array/splice +tags: + - Array + - JavaScript + - 原型 + - 参考 + - 数组 + - 方法 +translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice +--- +<div>{{JSRef}}</div> + +<p><strong><code>splice()</code></strong> 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。</p> + +<div>{{EmbedInteractiveExample("pages/js/array-splice.html")}}</div> + +<p class="hidden">交互范例的源码储存于 GitHub 仓库。想要参与此项目,可 clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> 并发送 pull request 给我们。</p> + +<h2 id="语法">语法</h2> + +<pre class="syntaxbox"><var>array</var>.splice(<var>start[</var>, <var>deleteCount[</var>, <var>item1[</var>, <var>item2[</var>, <em>...]]]]</em>) +</pre> + +<h3 id="参数">参数</h3> + +<dl> + <dt><code>start</code></dt> + <dd>指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于<code>array.length-n</code>);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。</dd> + <dt><code>deleteCount</code> {{optional_inline}}</dt> + <dd>整数,表示要移除的数组元素的个数。</dd> + <dd>如果 <code>deleteCount</code> 大于 <code>start</code> 之后的元素的总数,则从 <code>start</code> 后面的元素都将被删除(含第 <code>start</code> 位)。</dd> + <dd>如果 <code>deleteCount</code> 被省略了,或者它的值大于等于<code>array.length - start</code>(也就是说,如果它大于或者等于<code>start</code>之后的所有元素的数量),那么<code>start</code>之后数组的所有元素都会被删除。</dd> + <dd>如果 <code>deleteCount</code> 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。</dd> + <dt><code>item1, item2, <em>...</em></code> {{optional_inline}}</dt> + <dd>要添加进数组的元素,从<code><var>start</var></code> 位置开始。如果不指定,则 <code>splice()</code> 将只删除数组元素。</dd> +</dl> + +<h3 id="返回值">返回值</h3> + +<p>由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。</p> + +<h2 id="描述">描述</h2> + +<p>如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。</p> + +<h2 id="示例">示例</h2> + +<h3 id="从第_2_位开始删除_0_个元素,插入“drum”">从第 2 位开始删除 0 个元素,插入“drum”</h3> + +<pre class="brush: js">var myFish = ["angel", "clown", "mandarin", "sturgeon"]; +var removed = myFish.splice(2, 0, "drum"); + +// 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"] +// 被删除的元素: [], 没有元素被删除 +</pre> + +<h3 id="从第_2_位开始删除_0_个元素,插入“drum”_和_guitar">从第 2 位开始删除 0 个元素,插入“drum” 和 "guitar"</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(2, 0, 'drum', 'guitar'); + +// 运算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"] +// 被删除的元素: [], 没有元素被删除 +</pre> + +<h3 id="从第_3_位开始删除_1_个元素">从第 3 位开始删除 1 个元素</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; +var removed = myFish.splice(3, 1); + +// 运算后的 myFish: ["angel", "clown", "drum", "sturgeon"] +// 被删除的元素: ["mandarin"] +</pre> + +<h3 id="从第_2_位开始删除_1_个元素,插入“trumpet”">从第 2 位开始删除 1 个元素,插入“trumpet”</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'drum', 'sturgeon']; +var removed = myFish.splice(2, 1, "trumpet"); + +// 运算后的 myFish: ["angel", "clown", "trumpet", "sturgeon"] +// 被删除的元素: ["drum"] +</pre> + +<h3 id="从第_0_位开始删除_2_个元素,插入parrot、anemone和blue">从第 0 位开始删除 2 个元素,插入"parrot"、"anemone"和"blue"</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; +var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); + +// 运算后的 myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"] +// 被删除的元素: ["angel", "clown"] +</pre> + +<h3 id="从第_2_位开始删除_2_个元素">从第 2 位开始删除 2 个元素</h3> + +<pre class="brush: js">var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; +var removed = myFish.splice(myFish.length - 3, 2); + +// 运算后的 myFish: ["parrot", "anemone", "sturgeon"] +// 被删除的元素: ["blue", "trumpet"] +</pre> + +<h3 id="从倒数第_2_位开始删除_1_个元素">从倒数第 2 位开始删除 1 个元素</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(-2, 1); + +// 运算后的 myFish: ["angel", "clown", "sturgeon"] +// 被删除的元素: ["mandarin"]</pre> + +<h3 id="从第_2_位开始删除所有元素">从第 2 位开始删除所有元素</h3> + +<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(2); + +// 运算后的 myFish: ["angel", "clown"] +// 被删除的元素: ["mandarin", "sturgeon"] +</pre> + +<h2 id="规范">规范</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">规范</th> + <th scope="col">状态</th> + <th scope="col">备注</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Initial definition. Implemented in JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<div class="hidden">此页面中的兼容性表是根据结构化数据生成的。如果您想为数据做出贡献,请查看 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> 并发送 pull request 给我们。</div> + +<p>{{Compat("javascript.builtins.Array.splice")}}</p> + +<h2 id="参见">参见</h2> + +<ul> + <li>{{jsxref("Array.prototype.push()", "push()")}} / {{jsxref("Array.prototype.pop()", "pop()")}} - 在数组末尾增/删元素;</li> + <li>{{jsxref("Array.prototype.unshift()", "unshift()")}} / {{jsxref("Array.prototype.shift()", "shift()")}} - 在数组首部增/删元素;</li> + <li>{{jsxref("Array.prototype.concat()", "concat()")}} - 把一个(或多个)数组和(或)值与原数组拼接,返回拼接后的数组。</li> +</ul> |