aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.html
diff options
context:
space:
mode:
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.html165
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>