diff options
Diffstat (limited to 'files/ja/web/javascript/reference/global_objects/array/@@iterator')
| -rw-r--r-- | files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html new file mode 100644 index 0000000000..df8c0269be --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/array/@@iterator/index.html @@ -0,0 +1,126 @@ +--- +title: 'Array.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +tags: + - Array + - Beginner + - ECMAScript 2015 + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - イテレーター + - メソッド +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +--- +<div>{{JSRef}}</div> + +<p><code><strong>@@iterator</strong></code> メソッドは<a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">反復プロトコル</a>の一部であり、値の列を同期的に反復する方法を定義します。</p> + +<p><code><strong>@@iterator</strong></code> プロパティの初期値は {{jsxref("Array.prototype.values()", "values()")}} プロパティの初期値と同じ関数オブジェクトです。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><code><var>arr</var>[Symbol.iterator]()</code></pre> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p>{{jsxref("Array.prototype.values()", "values()")}} <strong>イテレーター</strong> によって与えられる初期値です。既定では、 <code>arr[Symbol.iterator]</code> を使うと {{jsxref("Array.prototype.values()", "values()")}} を返します。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Iteration_using_for...of_loop" name="Iteration_using_for...of_loop">for...of ループを用いた反復</h3> + +<h4 id="HTML">HTML</h4> + +<pre class="brush: html notranslate"><ul id="letterResult"> +</ul></pre> + +<h4 id="JavaScript">JavaScript</h4> + +<pre class="brush: js notranslate">var arr = ['a', 'b', 'c']; +var eArr = arr[Symbol.iterator](); +var letterResult = document.getElementById('letterResult'); +// your browser must support for..of loop +// and let-scoped variables in for loops +// const and var could also be used +for (let letter of eArr) { + letterResult.innerHTML += "<li>" + letter + "</li>"; +} +</pre> + +<h4 id="Result" name="Result">結果</h4> + +<p>{{EmbedLiveSample('Iteration_using_for...of_loop', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/@@iterator')}}</p> + +<h3 id="Alternative_iteration" name="Alternative_iteration">他の反復方法</h3> + +<pre class="brush: js notranslate">var arr = ['a', 'b', 'c', 'd', 'e']; +var eArr = arr[Symbol.iterator](); +console.log(eArr.next().value); // a +console.log(eArr.next().value); // b +console.log(eArr.next().value); // c +console.log(eArr.next().value); // d +console.log(eArr.next().value); // e +</pre> + +<h3 id="Use_Case_for_brace_notation" name="Use_Case_for_brace_notation">括弧表記の使用法</h3> + +<p>この構文をドット記法 (<code>Array.prototype.values()</code>) よりも優先して使用する場合は、事前にどのようなオブジェクトになるのかが分からない場合です。イテレータを受け取り、その値を反復処理する関数があるが、そのオブジェクトが [Iterable].prototype.values メソッドを持っているかどうかわからない場合です。これはStringオブジェクトのような組み込みオブジェクトでも、カスタムオブジェクトでもよいでしょう。これは <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator">String</a> オブジェクトのような組込みオブジェクトや、独自オブジェクトである可能性があります。</p> + +<pre class="brush: js notranslate">function logIterable(it) { + var iterator = it[Symbol.iterator](); + // your browser must support for..of loop + // and let-scoped variables in for loops + // const and var could also be used + for (let letter of iterator) { + console.log(letter); + } +} + +// Array +logIterable(['a', 'b', 'c']); +// a +// b +// c + +// string +logIterable('abc'); +// a +// b +// c + +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Array.@@iterator")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Array.prototype.keys()")}}</li> + <li>{{jsxref("Array.prototype.entries()")}}</li> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Array.prototype.values()")}}</li> +</ul> |
