diff --git a/files/ja/_redirects.txt b/files/ja/_redirects.txt index 72c86128802703..25cfae556b7c0f 100644 --- a/files/ja/_redirects.txt +++ b/files/ja/_redirects.txt @@ -1332,6 +1332,7 @@ /ja/docs/Glossary/Client_hints /ja/docs/Web/HTTP/Client_hints /ja/docs/Glossary/Constant(定数) /ja/docs/Glossary/Constant /ja/docs/Glossary/Constant(定数) /ja/docs/Glossary/Constant +/ja/docs/Glossary/DOS_attack /ja/docs/conflicting/Glossary/Denial_of_Service /ja/docs/Glossary/DTD /ja/docs/Glossary/Doctype /ja/docs/Glossary/Descriptor_(CSS) /ja/docs/Glossary/CSS_Descriptor /ja/docs/Glossary/Empty_element /ja/docs/Glossary/Void_element diff --git a/files/ja/_wikihistory.json b/files/ja/_wikihistory.json index a704f548494801..e77df9989f4261 100644 --- a/files/ja/_wikihistory.json +++ b/files/ja/_wikihistory.json @@ -590,10 +590,6 @@ "modified": "2020-05-01T02:52:31.457Z", "contributors": ["TheSakuMa", "mfuji09", "sii", "lpcwww"] }, - "Glossary/DOS_attack": { - "modified": "2020-01-07T12:39:20.859Z", - "contributors": ["Uemmra3", "mfuji09", "dskmori", "kadokura"] - }, "Glossary/DTMF": { "modified": "2019-03-18T21:26:29.740Z", "contributors": ["Wind1808"] @@ -30043,6 +30039,10 @@ "modified": "2020-07-17T23:22:13.809Z", "contributors": ["papparapa", "silverskyvicto"] }, + "conflicting/Glossary/Denial_of_Service": { + "modified": "2020-01-07T12:39:20.859Z", + "contributors": ["Uemmra3", "mfuji09", "dskmori", "kadokura"] + }, "conflicting/Learn/JavaScript/Client-side_web_APIs/Fetching_data": { "modified": "2020-08-12T11:49:11.332Z", "contributors": [ diff --git a/files/ja/glossary/dos_attack/index.md b/files/ja/conflicting/glossary/denial_of_service/index.md similarity index 95% rename from files/ja/glossary/dos_attack/index.md rename to files/ja/conflicting/glossary/denial_of_service/index.md index 47eeaf209c5ef4..e3b192dcdcd87d 100644 --- a/files/ja/glossary/dos_attack/index.md +++ b/files/ja/conflicting/glossary/denial_of_service/index.md @@ -1,6 +1,7 @@ --- title: DoS attack (DoS 攻撃) -slug: Glossary/DOS_attack +slug: conflicting/Glossary/Denial_of_Service +original_slug: Glossary/DOS_attack l10n: sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34 --- diff --git a/files/ja/glossary/soap/index.md b/files/ja/glossary/soap/index.md index 953d85ee3df452..2a62f6dcd36124 100644 --- a/files/ja/glossary/soap/index.md +++ b/files/ja/glossary/soap/index.md @@ -1,19 +1,15 @@ --- title: SOAP slug: Glossary/SOAP +l10n: + sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34 --- {{GlossarySidebar}} -**SOAP** (Simple Object Access Protocol) は {{glossary('XML')}} 形式でデータを転送する{{glossary('protocol','プロトコル')}}です。{{glossary('Mozilla Firefox','Firefox')}} は 2008 年に SOAP のサポートを廃止しました。 +**SOAP** (Simple Object Access Protocol) は {{glossary('XML')}} 形式でデータを転送する{{glossary('protocol','プロトコル')}}です。 -## 関連項目 +## 関連情報 -### 一般知識 - -- Wikipedia の [SOAP](https://ja.wikipedia.org/wiki/SOAP) -- [SOAP in Gecko-based Browsers](/ja_docs/SOAP_in_Gecko-based_Browsers) - -### 技術リファレンス - -- [Specification](https://www.w3.org/TR/soap12-part1/) +- [SOAP](https://ja.wikipedia.org/wiki/SOAP)(ウィキペディア) +- [仕様書](https://www.w3.org/TR/soap12-part1/) diff --git a/files/ja/web/api/requestinit/index.md b/files/ja/web/api/requestinit/index.md index 192838469c840d..d83fedd1fb7305 100644 --- a/files/ja/web/api/requestinit/index.md +++ b/files/ja/web/api/requestinit/index.md @@ -39,7 +39,7 @@ l10n: - {{jsxref("TypedArray")}} - {{domxref("URLSearchParams")}} - 詳しくは[本体の設定](/ja/docs/Web/API/Fetch_API/Using_Fetch#setting_a_body)を参照してください。 + 詳しくは[本体の設定](/ja/docs/Web/API/Fetch_API/Using_Fetch#本体の設定)を参照してください。 - `browsingTopics` {{optional_inline}} {{experimental_inline}} @@ -99,7 +99,7 @@ l10n: オリジン間のリクエストに資格情報を含めると、{{glossary("CSRF")}} 攻撃を受けやすくなる可能性があります。そのため、`credentials` が `include` に設定されていても、{{httpheader("Access-Control-Allow-Credentials")}} をレスポンスに含めることで、サーバーも資格情報を含めることに同意する必要があります。さらに、この状況ではサーバーは{{httpheader("Access-Control-Allow-Origin")}} レスポンスヘッダーでクライアントのオリジンのサーバーを明示的に指定しなければなりません(つまり、`*` は許可されません)。 - 詳しくは[資格情報を含める](/ja/docs/Web/API/Fetch_API/Using_Fetch#including_credentials)を参照してください。 + 詳しくは[資格情報を含める](/ja/docs/Web/API/Fetch_API/Using_Fetch#資格情報を含める)を参照してください。 既定値は `same-origin` です。 @@ -155,7 +155,7 @@ l10n: - `websocket` - : [WebSocket](/ja/docs/Web/API/WebSockets_API) 接続を確立するときのみ使用します。 - 詳しくは、[オリジン間リクエストを行う](/ja/docs/Web/API/Fetch_API/Using_Fetch#making_cross-origin_requests)を参照してください。 + 詳しくは、[オリジン間リクエストを行う](/ja/docs/Web/API/Fetch_API/Using_Fetch#オリジン間リクエストを行う)を参照してください。 既定値は `cors` です。 diff --git a/files/ja/web/javascript/memory_management/index.md b/files/ja/web/javascript/memory_management/index.md index 94ad3b2801115d..0e4ec907831a8f 100644 --- a/files/ja/web/javascript/memory_management/index.md +++ b/files/ja/web/javascript/memory_management/index.md @@ -7,7 +7,7 @@ l10n: {{JsSidebar("Advanced")}} -C のような低水準言語には、[`malloc()`](https://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html) や [`free()`](https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Overview_of_functions) のような低水準のメモリー管理プリミティブがあります。これに対して JavaScript では、オブジェクトを作成するときにメモリーを自動的に確保し、使用しなくなったらメモリーを解放します(_ガーベジコレクション_)。この自動性が混乱の元になる可能性があります。メモリー管理について心配する必要がないという誤った印象を開発者に与える可能性があります。 +C のような低水準言語には、[`malloc()`](https://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html) や [`free()`](https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Overview_of_functions) のような低水準のメモリー管理プリミティブがあります。これに対して JavaScript では、オブジェクトを作成するときにメモリーを自動的に確保し、使用しなくなったらメモリーを解放します(_ガベージコレクション_)。この自動性が混乱の元になる可能性があります。メモリー管理について心配する必要がないという誤った印象を開発者に与える可能性があります。 ## メモリーライフサイクル diff --git a/files/ja/web/javascript/reference/global_objects/iterator/flatmap/index.md b/files/ja/web/javascript/reference/global_objects/iterator/flatmap/index.md new file mode 100644 index 00000000000000..78abca5d465189 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/flatmap/index.md @@ -0,0 +1,146 @@ +--- +title: Iterator.prototype.flatMap() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/flatMap +l10n: + sourceCommit: 7df171ff1d6da6a5e3911b7aedd56f6312bf0cca +--- + +{{JSRef}} + +**`flatMap()`** は {{jsxref("Iterator")}} インスタンスの目疎度で、新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)を返します。これは元のイテレーターのそれぞれの要素を取り、それをマッピング関数によって走査し、マッピング関数から返される(他のイテレーターや反復可能オブジェクトに含まれている)要素を返します。 + +## 構文 + +```js-nolint +flatMap(callbackFn) +``` + +### 引数 + +- `callbackFn` + - : このイテレーターが生成するすべての要素に対して実行する関数です。これは `flatMap()` から返される要素を発生させるイテレーターまたは反復可能オブジェクトを返します。なお、 {{jsxref("Array.prototype.flatMap()")}} の場合とは異なり、イテレーターまたは反復可能オブジェクトでない単一の値を返してはいけません。この関数は、以下の引数とともに呼び出されます。 + - `element` + - : 処理中の現在の要素です。 + - `index` + - : 処理中の現在の要素のインデックスです。 + +### 返値 + +新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)です。最初にイテレーターヘルパーの `next()` メソッドが呼び出されると、その元となるイテレーターによって生成された最初の要素に対して `callbackFn` が呼び出され、イテレーターまたは反復可能なオブジェクトである返値がイテレーターヘルパーによって順に生成されます({{jsxref("Operators/yield*", "yield*")}} のように)。前の要素が `callbackFn` によって返された後、次の要素が基礎となるイテレーターから取得されます。基礎となるイテレーターが完了すると、イテレーターヘルパーも完了します(`next()` メソッドは `{ value: undefined, done: true }` を生成します)。 + +### 例外 + +- {{jsxref("TypeError")}} + - : `callbackFn` がイテレーターや反復可能な値ではない値、あるいは文字列プリミティブを返した場合に発生します。 + +## 解説 + +`flatMap` は、コールバック関数からイテレーターまたは反復可能オブジェクトの 2 種類の返値を受け入れます。これらは、 {{jsxref("Iterator.from()")}} と同じ方法で処理されます。返値が反復可能オブジェクトの場合、 `[Symbol.iterator]()` メソッドが呼び出され、返値が使用されます。それ以外の場合、返値はイテレーターとして扱われ、その `next()` メソッドが呼び出されます。 + +```js +[1, 2, 3] + .values() + .flatMap((x) => { + let itDone = false; + const it = { + next() { + if (itDone) { + return { value: undefined, done: true }; + } + itDone = true; + return { value: x, done: false }; + }, + }; + switch (x) { + case 1: + // イテレーターではない反復可能オブジェクト + return { [Symbol.iterator]: () => it }; + case 2: + // 反復可能オブジェクトではないイテレーター + return it; + case 3: + // 反復可能なイテレーターは、反復可能オブジェクトとして扱われる + return { + ...it, + [Symbol.iterator]() { + console.log("Symbol.iterator が呼び出されました"); + return it; + }, + }; + } + }) + .toArray(); +// "Symbol.iterator が呼び出されました" とログ出力 +// [1, 2, 3] を返す +``` + +## 例 + +### マップのマージ + +以下の例は 2 つの {{jsxref("Map")}} オブジェクトを 1 つにマージします。 + +```js +const map1 = new Map([ + ["a", 1], + ["b", 2], + ["c", 3], +]); +const map2 = new Map([ + ["d", 4], + ["e", 5], + ["f", 6], +]); + +const merged = new Map([map1, map2].values().flatMap((x) => x)); +console.log(merged.get("a")); // 1 +console.log(merged.get("e")); // 5 +``` + +これにより、マップの中身の一時コピーが作成されるのを避けることができます。 {{jsxref("Array.prototype.flatMap()")}} は配列のみを平坦化し、反復可能オブジェクトは平坦化しないため、配列 `[map1, map2]` は最初の段階で({{jsxref("Array.prototype.values()")}} を使用して)イテレーターに変換する必要があることに注意してください。 + +```js +new Map([map1, map2].flatMap((x) => x)); // Map(1) {undefined => undefined} +``` + +### 文字列の返却 + +文字列は反復可能オブジェクトですが、 `flatMap()` はその仕様上、 `callbackFn` から返される文字列プリミティブを拒否します。これは、コードポイントによる反復処理の挙動が、ユーザーの意図に沿わないことが多いからです。 + +```js example-bad +[1, 2, 3] + .values() + .flatMap((x) => String(x)) + .toArray(); // TypeError: Iterator.prototype.flatMap called on non-object +``` + +代わりに配列でラップし、文字列全体を 1 つとして返すようにすることもできます。 + +```js +[1, 2, 3] + .values() + .flatMap((x) => [String(x)]) + .toArray(); // ['1', '2', '3'] +``` + +または、コードポイントで反復処理する動作を意図している場合は、 {{jsxref("Iterator.from()")}} を使用して、それを正規のイテレーターに変換することができます。 + +```js +[1, 2, 3] + .values() + .flatMap((x) => Iterator.from(String(x * 10))) + .toArray(); +// ['1', '0', '2', '0', '3', '0'] +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.flatMap` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) diff --git a/files/ja/web/javascript/reference/global_objects/iterator/foreach/index.md b/files/ja/web/javascript/reference/global_objects/iterator/foreach/index.md new file mode 100644 index 00000000000000..a4fcdbe0a30162 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/foreach/index.md @@ -0,0 +1,73 @@ +--- +title: Iterator.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/forEach +l10n: + sourceCommit: a71768c124d1bb2dceef873c0bda266e9f714e4c +--- + +{{JSRef}} + +**`forEach()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、 {{jsxref("Array.prototype.forEach()")}} と似ています。指定された関数を、イテレーターによって生成されたそれぞれの要素に対して 1 回ずつ指定された関数を実行します。 + +## 構文 + +```js-nolint +forEach(callbackFn) +``` + +### 引数 + +- `callbackFn` + - : イテレーターによって生成された各要素に対して実行する関数。その返値は破棄されます。関数は次の引数で呼び出されます。 + - `element` + - : 処理中の現在の要素です。 + - `index` + - : 処理中の現在の要素のインデックスです。 + +### 返値 + +{{jsxref("undefined")}} です。 + +## 解説 + +`forEach()` はイテレーターを反復処理し、それぞれの要素に対して一度ずつ `callbackFn` 関数を呼び出します。 他のほとんどのイテレーターヘルパーメソッドとは異なり、これは遅延的ではないため、無限イテレーターでは動作しません。 + +## 例 + +### forEach() の使用 + +```js +new Set([1, 2, 3]).values().forEach((v) => console.log(v)); + +// ログ出力: +// 1 +// 2 +// 3 +``` + +これは次のものと同等です。 + +```js +for (const v of new Set([1, 2, 3]).values()) { + console.log(v); +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.forEach` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) +- {{jsxref("Iterator")}} +- {{jsxref("Iterator.prototype.find()")}} +- {{jsxref("Iterator.prototype.map()")}} +- {{jsxref("Iterator.prototype.filter()")}} +- {{jsxref("Iterator.prototype.every()")}} +- {{jsxref("Iterator.prototype.some()")}} +- {{jsxref("Array.prototype.forEach()")}} diff --git a/files/ja/web/javascript/reference/global_objects/iterator/map/index.md b/files/ja/web/javascript/reference/global_objects/iterator/map/index.md new file mode 100644 index 00000000000000..4f0938464620c6 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/map/index.md @@ -0,0 +1,100 @@ +--- +title: Iterator.prototype.map() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/map +l10n: + sourceCommit: 7df171ff1d6da6a5e3911b7aedd56f6312bf0cca +--- + +{{JSRef}} + +**`map()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、マッピング関数によってそれぞれ変換されたイテレーターの要素を生成する新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)を返します。 + +## 構文 + +```js-nolint +map(callbackFn) +``` + +### 引数 + +- `callbackFn` + - : イテレーターによって生成された各要素に対して実行する関数。その返値はイテレーターヘルパーによって生成されます。関数は次の引数とともに呼び出されます。 + - `element` + - : 処理中の現在の要素です。 + - `index` + - : 処理中の現在の要素のインデックスです。 + +### 返値 + +新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)です。イテレーターヘルパーの `next()` メソッドが呼び出されるたびに、そのイテレーターヘルパーは基礎となるイテレーターから次の要素を取得し、 `callbackFn` を適用し、その返値を返します。基礎となるイテレーターが完了すると、イテレーターヘルパーも完了します(`next()` メソッドは `{ value: undefined, done: true }` を生成します)。 + +## 解説 + +配列メソッドよりもイテレーターヘルパーのほうが優れている主な点は、遅延的であるということ、つまり、要求されたときにのみ次の値を生成するという意味です。これにより、不必要なコンピューター処理を避けることができ、また、無限イテレーターで使用することもできます。 `map()` メソッドを使用すると、反復処理したときに変換された要素を生成する新しいイテレーターを作成することができます。 + +## 例 + +### map() の使用 + +次の例では、フィボナッチ数列の項を生成するイテレーターを作成し、それを各項を 2 乗した新しい数列に変換し、最初のいくつかの項を読み取ります。 + +```js +function* fibonacci() { + let current = 1; + let next = 1; + while (true) { + yield current; + [current, next] = [next, current + next]; + } +} + +const seq = fibonacci().map((x) => x ** 2); +console.log(seq.next().value); // 1 +console.log(seq.next().value); // 1 +console.log(seq.next().value); // 4 +``` + +### map() の for...of ループでの使用 + +`map()` は、イテレーターを手作業で作成しない場合に最も便利です。イテレーターも反復可能オブジェクトであるため、 {{jsxref("Statements/for...of", "for...of")}} ループを使用して、返されたヘルパーを反復処理することができます。 + +```js +for (const n of fibonacci().map((x) => x ** 2)) { + console.log(n); + if (n > 30) { + break; + } +} + +// Logs: +// 1 +// 1 +// 4 +// 9 +// 25 +// 64 +``` + +This is equivalent to: + +```js +for (const n of fibonacci()) { + const n2 = n ** 2; + console.log(n2); + if (n2 > 30) { + break; + } +} +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.map` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) diff --git a/files/ja/web/javascript/reference/global_objects/iterator/reduce/index.md b/files/ja/web/javascript/reference/global_objects/iterator/reduce/index.md new file mode 100644 index 00000000000000..1ff49d3f2476cf --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/reduce/index.md @@ -0,0 +1,82 @@ +--- +title: Iterator.prototype.reduce() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/reduce +l10n: + sourceCommit: 06b418a190b8e4a46682ab706d14984e7db34862 +--- + +{{JSRef}} + +**`reduce()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、 {{jsxref("Array.prototype.reduce")}} と似ています。イテレーターによって生成されたそれぞれの要素に対して、ユーザーが指定した「縮約」コールバック関数を実行し、前の要素の計算結果を返値として渡します。すべての要素に対して縮約を実行した最終結果は、単一の値となります。 + +## 構文 + +```js-nolint +reduce(callbackFn) +reduce(callbackFn, initialValue) +``` + +### 引数 + +- `callbackFn` + - : イテレーターによって生成される各要素に対して実行される関数。その返値は、次の `callbackFn` の反復処理において `accumulator`引数の値とみなされます。最後の反復処理では、返値は `reduce()` の返値となります。この関数は、次の引数とともに呼び出されます。 + - `accumulator` + - : 前回 `callbackFn` を呼び出した際に得られた値。最初の呼び出しでは、後者が指定されている場合はその値が `initialValue` となり、そうでない場合はイテレーターの最初の要素がその値となります。 + - `currentValue` + - : 現在の要素の値。最初の呼び出しでは、 `initialValue` を指定している場合はその値がイテレーターの最初の要素となり、指定していない場合は 2 つ目の要素となります。 + - `currentIndex` + - : `currentValue` のインデックス位置。最初の呼び出しでは、 `initialValue` を指定した場合はその値が `0`、指定しない場合は `1` となります。 +- `initialValue` {{optional_inline}} + - : コールバックが最初に呼び出された時点で `accumulator` が初期化される値。 `initialValue` が指定されている場合、 `callbackFn` は最初の要素を `currentValue` として実行を開始します。 `initialValue` が指定されていない場合、 `accumulator` は最初の要素で初期化され、 `callbackFn` は 2 つ目の要素を `currentValue` として実行を開始します。 この場合、イテレーターが空の場合(つまり、 `accumulator` として返す最初の値がない場合)、エラーが発生します。 + +### 返値 + +「縮約」コールバック関数をイテレーター全体に対して完全に実行した結果の値です。 + +### 例外 + +- {{jsxref("TypeError")}} + - : イテレーターに要素が含まれておらず、 `initialValue` が指定されていない場合に発生します。 + +## 解説 + +`reduce()` がどのように動作するのかの詳細については、 {{jsxref("Array.prototype.reduce()")}} を参照してください。 他のほとんどのイテレーターヘルパーメソッドとは異なり、これは遅延的ではないため、無限イテレーターでは動作しません。 + +## 例 + +### reduce() の使用 + +次の例では、フィボナッチ数列の項目を生成するイテレーターを作成し、最初の 10 項目を合計します。 + +```js +function* fibonacci() { + let current = 1; + let next = 1; + while (true) { + yield current; + [current, next] = [next, current + next]; + } +} + +console.log( + fibonacci() + .take(10) + .reduce((a, b) => a + b), +); // 143 +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.reduce` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) +- {{jsxref("Iterator")}} +- {{jsxref("Iterator.prototype.map()")}} +- {{jsxref("Iterator.prototype.flatMap()")}} +- {{jsxref("Array.prototype.reduce()")}} diff --git a/files/ja/web/javascript/reference/global_objects/iterator/some/index.md b/files/ja/web/javascript/reference/global_objects/iterator/some/index.md new file mode 100644 index 00000000000000..879cfee3863b9f --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/some/index.md @@ -0,0 +1,81 @@ +--- +title: Iterator.prototype.some() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/some +l10n: + sourceCommit: 75c5e27d00ae191a3f549820c61d5bfff31428f8 +--- + +{{JSRef}} + +**`some()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、 {{jsxref("Array.prototype.some()")}} と似ています。これは、イテレーターによって生成された要素の少なくとも 1 つが、指定された関数で実装されている検査に合格しているかどうかを判定します。論理値を返します。 + +## 構文 + +```js-nolint +some(callbackFn) +``` + +### 引数 + +- `callbackFn` + - : イテレーターによって生成されたそれぞれの要素に対して実行する関数。 要素が検査に合格した場合は[真値](/ja/docs/Glossary/Truthy)を返し、そうでなければ[偽値](/ja/docs/Glossary/Falsy)を返すようにします。 この関数は次の引数で呼び出されます。 + - `element` + - : 処理中の現在の要素です。 + - `index` + - : 処理中の現在の要素のインデックスです。 + +### 返値 + +コールバック関数が少なくとも 1 つの要素に対して{{Glossary("truthy","真値")}}を返した場合、 `true` です。それ以外は `false` です。 + +## 解説 + +`some()` はイテレーターを反復処理し、それぞれの要素に対して一度ずつ `callbackFn` 関数を呼び出します。 コールバック関数が真値を返したら、`true` を即座に返します。 そうでない場合は、イテレーターの終わりまで反復処理を行い、 `false` を返します。 `some()` が `true` を返した場合、そのイテレーターは `return()` メソッドを呼び出して閉じられます。 + +イテレーターヘルパーの主な利点は、配列メソッドよりも「遅延的」であるということ、つまり、要求されたときにのみ次の値を生成するという意味です。これにより、不必要なコンピューター処理を避けることができ、また、無限イテレーターでも使用することができます。無限イテレーターでは、 `some()` は最初の真値が得られるとすぐに `true` を返します。 `callbackFn` が常に偽値を返す場合、メソッドは決して戻りません。 + +## 例 + +### some() の使用 + +```js +function* fibonacci() { + let current = 1; + let next = 1; + while (true) { + yield current; + [current, next] = [next, current + next]; + } +} + +const isEven = (x) => x % 2 === 0; +console.log(fibonacci().some(isEven)); // true + +const isNegative = (x) => x < 0; +console.log(fibonacci().take(10).some(isNegative)); // false +console.log(fibonacci().some(isNegative)); // Never completes +``` + +`some()` を呼び出すと、メソッドが早期に復帰した場合でも、常にそのイテレーターは閉じられます。 イテレーターが途中の状態のままになることはありません。 + +```js +const seq = fibonacci(); +console.log(seq.some(isEven)); // true +console.log(seq.next()); // { value: undefined, done: true } +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.some` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) +- {{jsxref("Iterator")}} +- {{jsxref("Iterator.prototype.every()")}} +- {{jsxref("Iterator.prototype.find()")}} +- {{jsxref("Array.prototype.some()")}} diff --git a/files/ja/web/javascript/reference/global_objects/iterator/symbol.iterator/index.md b/files/ja/web/javascript/reference/global_objects/iterator/symbol.iterator/index.md index d0a4ab867f2c03..d820e71c2aa855 100644 --- a/files/ja/web/javascript/reference/global_objects/iterator/symbol.iterator/index.md +++ b/files/ja/web/javascript/reference/global_objects/iterator/symbol.iterator/index.md @@ -1,16 +1,13 @@ --- -title: Iterator.prototype[@@iterator]() +title: Iterator.prototype[Symbol.iterator]() slug: Web/JavaScript/Reference/Global_Objects/Iterator/Symbol.iterator -original_slug: Web/JavaScript/Reference/Global_Objects/Iterator/@@iterator l10n: - sourceCommit: ab97df6ce8865569507bcfc884206a1ed297a690 + sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca --- {{JSRef}} -**`[@@iterator]()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、[反復可能プロトコル](/ja/docs/Web/JavaScript/Reference/Iteration_protocols)を実行し、組み込みイテレーターが反復可能オブジェクトを期待する大部分の構文、例えば[スプレッド構文](/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax)や {{jsxref("Statements/for...of", "for...of")}} ループなどで利用できるようにします。これは [`this`](/ja/docs/Web/JavaScript/Reference/Operators/this) の値、すなわちイテレーターオブジェクト自身を返します。 - -{{EmbedInteractiveExample("pages/js/map-prototype-@@iterator.html")}} +**`[Symbol.iterator]()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、[反復可能プロトコル](/ja/docs/Web/JavaScript/Reference/Iteration_protocols)を実行し、組み込みイテレーターが反復可能オブジェクトを期待する大部分の構文、例えば[スプレッド構文](/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax)や {{jsxref("Statements/for...of", "for...of")}} ループなどで利用できるようにします。これは [`this`](/ja/docs/Web/JavaScript/Reference/Operators/this) の値、すなわちイテレーターオブジェクト自身を返します。 ## 構文 @@ -18,6 +15,10 @@ l10n: iterator[Symbol.iterator]() ``` +### 引数 + +なし。 + ### 返値 [`this`](/ja/docs/Web/JavaScript/Reference/Operators/this) の値、すなわちイテレーターオブジェクト自身です。 @@ -26,7 +27,7 @@ iterator[Symbol.iterator]() ### for...of ループを使用した反復処理 -このメソッドを直接呼び出す必要はめったにないことに注意してください。`iterator` メソッドの存在により、組み込みのイテレーターはすべて[反復可能] (/ja/docs/Web/JavaScript/Reference/Iteration_protocols#反復可能プロトコル)となり、`for...of` ループのような反復処理構文はループオーバーするために自動的にこのメソッドを呼び出してイテレーターを取得します。 +このメソッドを直接呼び出す必要はめったにないことに注意してください。 `[Symbol.iterator]()` メソッドの存在により、組み込みのイテレーターはすべて[反復可能] (/ja/docs/Web/JavaScript/Reference/Iteration_protocols#反復可能プロトコル)となり、`for...of` ループのような反復処理構文はループオーバーするために自動的にこのメソッドを呼び出してイテレーターを取得します。 ```js const arrIterator = [1, 2, 3].values(); @@ -46,4 +47,6 @@ for (const value of arrIterator) { ## 関連情報 -- {{jsxref("Statements/for...of", "for...of")}} +- {{jsxref("Iterator")}} +- {{jsxref("Symbol.iterator")}} +- [反復処理プロトコル](/ja/docs/Web/JavaScript/Reference/Iteration_protocols) diff --git a/files/ja/web/javascript/reference/global_objects/iterator/take/index.md b/files/ja/web/javascript/reference/global_objects/iterator/take/index.md new file mode 100644 index 00000000000000..3a67c287bd2231 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/take/index.md @@ -0,0 +1,134 @@ +--- +title: Iterator.prototype.take() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/take +l10n: + sourceCommit: 7df171ff1d6da6a5e3911b7aedd56f6312bf0cca +--- + +{{JSRef}} + +**`take()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、このイテレーター内で指定された数の要素を生成し、その後終了する新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)を返します。 + +## 構文 + +```js-nolint +take(limit) +``` + +### 引数 + +- `limit` + - : 反復処理の先頭から取り出す要素の数です。 + +### 返値 + +新しい[イテレーターヘルパーオブジェクト](/ja/docs/Web/JavaScript/Reference/Global_Objects/Iterator#イテレーターヘルパーオブジェクト)です。返されたイテレーターヘルパーは、元のイテレーターの要素を 1 つずつ生成し、 `limit` の数の要素が生成された場合、または元のイテレーターがすべて処理された場合(`next()` メソッドが `{ value: undefined, done: true }` を生成した場合)に、完了します。 + +### 例外 + +- {{jsxref("RangeError")}} + - : `limit` を[整数に変換](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number#整数への変換)した場合に {{jsxref("NaN")}} または負の数になった場合。 + +## 例 + +### take() の使用 + +次の例では、フィボナッチ数列の項目を反復処理するイテレーターを作成し、最初の 3 つの項目をログ記録します。 + +```js +function* fibonacci() { + let current = 1; + let next = 1; + while (true) { + yield current; + [current, next] = [next, current + next]; + } +} + +const seq = fibonacci().take(3); +console.log(seq.next().value); // 1 +console.log(seq.next().value); // 1 +console.log(seq.next().value); // 2 +console.log(seq.next().value); // undefined +``` + +### take() を for...of ループで使用 + +`take()` は、イテレーターを手作業で作成しない場合に最も便利です。イテレーターも反復可能オブジェクトであるため、返されたヘルパーを {{jsxref("Statements/for...of", "for...of")}} ループで反復処理することができます。 + +```js +for (const n of fibonacci().take(5)) { + console.log(n); +} + +// ログ出力: +// 1 +// 1 +// 2 +// 3 +// 5 +``` + +`fibonacci()` は無限イテレーターであるため、`for` ループを使用して直接反復処理することはできません。 + +### drop() と take() の組み合わせ + +`take()` を {{jsxref("Iterator.prototype.drop()")}} と結合すると、イテレーターのスライスを取得することができます。 + +```js +for (const n of fibonacci().drop(2).take(5)) { + // 最初の 2 つの要素を捨て、次の 5 つを取る + console.log(n); +} +// ログ出力: +// 2 +// 3 +// 5 +// 8 +// 13 + +for (const n of fibonacci().take(5).drop(2)) { + // 最初の5つの要素を取り、その次の 2 つを捨てる + console.log(n); +} +// ログ出力: +// 2 +// 3 +// 5 +``` + +### 取得数の上限と下限 + +`limit` が負の数または {{jsxref("NaN")}} であった場合、 {{jsxref("RangeError")}} が発生します。 + +```js +fibonacci().take(-1); // RangeError: -1 must be positive +fibonacci().take(undefined); // RangeError: undefined must be positive +``` + +`limit` が反復可能オブジェクトの総数よりも大きい場合({{jsxref("Infinity")}} など)、返されたイテレーターヘルパーは、基本的に元のイテレーターと同じ動作をします。 + +```js +for (const n of new Set([1, 2, 3]).values().take(Infinity)) { + console.log(n); +} + +// ログ出力: +// 1 +// 2 +// 3 +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.take` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) +- {{jsxref("Iterator")}} +- {{jsxref("Iterator.prototype.drop()")}} diff --git a/files/ja/web/javascript/reference/global_objects/iterator/toarray/index.md b/files/ja/web/javascript/reference/global_objects/iterator/toarray/index.md new file mode 100644 index 00000000000000..d17bfb8d6e2707 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/iterator/toarray/index.md @@ -0,0 +1,64 @@ +--- +title: Iterator.prototype.toArray() +slug: Web/JavaScript/Reference/Global_Objects/Iterator/toArray +l10n: + sourceCommit: 06b418a190b8e4a46682ab706d14984e7db34862 +--- + +{{JSRef}} + +**`toArray()`** は {{jsxref("Iterator")}} インスタンスのメソッドで、このイテレーターから取り出される要素で新しい {{jsxref("Array")}} インスタンスを作成します。 + +## 構文 + +```js-nolint +toArray() +``` + +### 引数 + +なし。 + +### 返値 + +このイテレーターから取り出され要素を取り出された順に持つ、新しい {{jsxref("Array")}} インスタンスです。 + +## 例 + +### toArray() の使用 + +`iterator.toArray()` は、 `Array.from(iterator)` および `[...iterator]` と同等ですが、複数のイテレーターヘルパーメソッドが関与する場合に、連結が容易になるという点が異なります。次の例では、フィボナッチ数列の項を生成するイテレーターを作成し、最初の10項を取り出し、奇数をフィルターで除外し、結果を配列に変換します。 + +```js +function* fibonacci() { + let current = 1; + let next = 1; + while (true) { + yield current; + [current, next] = [next, current + next]; + } +} + +const array = fibonacci() + .take(10) + .filter((x) => x % 2 === 0) + .toArray(); + +console.log(array); // [2, 8, 34] +``` + +なお、 `toArray()` は処理の最後のステップとして呼び出すのがよい考えです。例えば、`fibonacci().take(10).toArray().filter(...)` は効率が悪いです。なぜなら、反復処理ヘルパーは遅延され、一時的な配列の作成を避けるからです。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Iterator.prototype.toArray` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#iterator-helpers) +- {{jsxref("Iterator")}} +- {{jsxref("Array.from()")}} diff --git a/files/ko/web/html/element/dl/index.md b/files/ko/web/html/element/dl/index.md index d93d9f7e1f2c25..0f549403bf3f1b 100644 --- a/files/ko/web/html/element/dl/index.md +++ b/files/ko/web/html/element/dl/index.md @@ -1,6 +1,8 @@ --- -title:
- 콘텐츠 카테고리 - | -
- 플로우 콘텐츠. <dl> 의 자식 중 이름-값 그룹이 있으면 뚜렷한 콘텐츠.
- |
-
---|---|
가능한 콘텐츠 | -
-
- 하나 이상의 {{htmlelement("dt")}} 요소와 하나 이상의
- {{htmlelement("dd")}} 요소로 구성한 그룹 0개 이상. 선택적으로
- {{htmlelement("script")}}와
- {{htmlelement("template")}}을 혼합 가능. |
-
태그 생략 | -불가능, 시작과 끝에 태그를 추가하는 것은 필수입니다. | -
가능한 부모 요소 | -- 플로우 콘텐츠를 허용하는 모든 요소. - | -
가능한 ARIA 역할 | -
- group , presentation
- |
-
DOM 인터페이스 | -{{domxref("HTMLDListElement")}} | -
+ 콘텐츠 카테고리 + | +
+ 플로우 콘텐츠, 만약 <dl> 의 자식 중 이름-값 그룹이 포함된 경우에는 뚜렷한 콘텐츠.
+ |
+
---|---|
가능한 콘텐츠 | +
+
+ 하나 이상의 {{htmlelement("dt")}} 요소와 하나 이상의
+ {{htmlelement("dd")}} 요소로 구성한 그룹 0개 이상. 선택적으로
+ {{htmlelement("script")}}와
+ {{htmlelement("template")}}을 혼합 가능. |
+
태그 생략 | +불가능, 시작과 끝에 태그를 추가 필수. | +
가능한 부모 요소 | ++ 플로우 콘텐츠를 허용하는 모든 요소. + | +
암시적 ARIA 역할 | ++ 해당 역할 없음 + | +
가능한 ARIA 역할 | +
+ group ,
+ list ,
+ none ,
+ presentation
+ |
+
DOM 인터페이스 | +{{domxref("HTMLDListElement")}} | +