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:
+title:
설명 목록 요소 slug: Web/HTML/Element/dl +l10n: + sourceCommit: 9231a7046973685f4600e1891fa644ecce41ef3b --- {{HTMLSidebar}} @@ -9,69 +11,20 @@ slug: Web/HTML/Element/dl {{EmbedInteractiveExample("pages/tabbed/dl.html", "tabbed-standard")}} -The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone [https://github.com/mdn/interactive-examples](https://github.com/mdn/interactive-examples) and send us a pull request. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 콘텐츠 카테고리 - - 플로우 콘텐츠. <dl>의 자식 중 이름-값 그룹이 있으면 뚜렷한 콘텐츠. -
가능한 콘텐츠 -

- 하나 이상의 {{htmlelement("dt")}} 요소와 하나 이상의 - {{htmlelement("dd")}} 요소로 구성한 그룹 0개 이상. 선택적으로 - {{htmlelement("script")}}와 - {{htmlelement("template")}}을 혼합 가능.
또는, 하나 - 이상의 {{htmlelement("div")}}. 선택적으로 - {{htmlelement("script")}}, {{htmlelement("template")}} - 혼합 가능. -

-
태그 생략불가능, 시작과 끝에 태그를 추가하는 것은 필수입니다.
가능한 부모 요소 - 플로우 콘텐츠를 허용하는 모든 요소. -
가능한 ARIA 역할 - group, presentation -
DOM 인터페이스{{domxref("HTMLDListElement")}}
- ## 특성 이 요소는 [전역 특성](/ko/docs/Web/HTML/Global_attributes)을 포함합니다. +## 접근성 고려사항 + +각각의 스크린 리더는 `
`를 다르게 표현합니다. 즉, 총 아이템의 개수, 용어/정의 컨텍스트 및 탐색 방법등을 다르게 노출합니다. 이러한 차이가 반드시 버그는 아닙니다. iOS 14부터의 VoiceOver는 전체 읽기 멍령이 아닌 가상 커서 탐색 시, `
` 콘텐츠가 목록임을 알립니다. VoiceOver는 `
`를 이용한 목록 탐색을 지원하지 않습니다. ARIA 용어 및 정의 역할을 `
` 구조에 적용하면 macOS 및 iOS에서 VoiceOver의 읽기 방식이 조정되므로 주의해야 합니다. + +- [iOS14에서의 VoiceOver 설명 목록 지원](https://adrianroselli.com/2020/09/voiceover-on-ios-14-supports-description-lists.html) +- [설명 목록 지원에 대한 개략](https://adrianroselli.com/2022/12/brief-note-on-description-list-support.html) + ## 예제 -### 하나의 용어와 하나의 정의 +### 단일 용어와 단일 정의 ```html
@@ -85,9 +38,11 @@ The source for this interactive example is stored in a GitHub repository. If you
``` -{{EmbedLiveSample("하나의_용어와_하나의_정의")}} +#### 결과 + +{{EmbedLiveSample("Single_term_and_description")}} -### 여러 개의 용어와 하나의 정의 +### 복수 용어와 단일 정의 ```html
@@ -103,9 +58,11 @@ The source for this interactive example is stored in a GitHub repository. If you
``` -{{EmbedLiveSample("여러_개의_용어와_하나의_정의")}} +#### 결과 -### 하나의 용어와 여러 개의 정의 +{{EmbedLiveSample("Multiple_terms_single_description")}} + +### 단일 용어와 복수 정의 ```html
@@ -123,9 +80,11 @@ The source for this interactive example is stored in a GitHub repository. If you
``` -{{EmbedLiveSample("하나의_용어와_여러_개의_정의")}} +#### 결과 + +{{EmbedLiveSample("Single_term_multiple_descriptions")}} -### 여러 개의 용어와 여러 개의 정의 +### 복수 용어와 복수 정의 위의 예제를 결합하여 여러 용어를 여러 정의와 연결하는 것도 가능합니다. @@ -146,7 +105,11 @@ The source for this interactive example is stored in a GitHub repository. If you
``` -팁: 아래처럼 키-값 구분자를 CSS로 지정하면 편리합니다. +#### 결과 + +{{EmbedLiveSample("Metadata")}} + +팁: 아래처럼 키-값 구분자를 CSS로 지정하면 유용합니다. ```css dt:after { @@ -154,11 +117,9 @@ dt:after { } ``` -{{EmbedLiveSample("메타데이터")}} - -### 이름-값 그룹을 {{htmlelement("div")}}로 감싸기 +### 이름-값 그룹을 `
`로 감싸기 -{{glossary("WHATWG")}} HTML에서는 `
` 안 각각의 이름-값 그룹을 {{htmlelement("div")}}로 감쌀 수 있습니다. 마이크로데이터를 사용할 때, 그룹에 전역 특성을 적용할 때, 아니면 스타일을 적용할 때 유용할 수 있습니다. +HTML에서는 `
` 요소의 각 이름-값 그룹을 {{htmlelement("div")}} 요소로 감쌀 수 있습니다. 이는 마이크로데이터를 사용하거나 전역 속성이 전체 그룹에 적용될 때 또는 스타일링 목적으로 유용할 수 있습니다. ```html
@@ -181,17 +142,80 @@ dt:after {
``` +#### 결과 + +{{EmbedLiveSample('Wrapping name-value groups in `div` elements')}} + ## 참고 페이지에서 들여쓰기를 하기 위한 목적으로 `
` (또는 {{htmlelement("ul")}}) 요소를 사용하지 마세요. 작동할 수는 있으나 좋지 않은 방법이고, 설명 목록의 원래 목적을 흐립니다. 용어의 들여쓰기를 수정하려면 [CSS](/ko/docs/Web/CSS) {{cssxref("margin")}} 속성을 사용하세요. -## 접근성 고려사항 - -각각의 스크린 리더는 `
`을 다르게 표현합니다. iOS의 VoiceOver 등 일부 스크린 리더는 `
`의 콘텐츠를 리스트로 표현하지 않습니다. 따라서, 각 아이템의 콘텐츠는 리스트 그룹 내 다른 항목과의 관계를 표현할 수 있는 방식으로 작성해야 합니다. +## 기술 요약 -- [CodePen - HTML Buddies: dt & dd](https://s.codepen.io/aardrian/debug/NzGaKP) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 콘텐츠 카테고리 + + 플로우 콘텐츠, 만약 <dl>의 자식 중 이름-값 그룹이 포함된 경우에는 뚜렷한 콘텐츠. +
가능한 콘텐츠 +

+ 하나 이상의 {{htmlelement("dt")}} 요소와 하나 이상의 + {{htmlelement("dd")}} 요소로 구성한 그룹 0개 이상. 선택적으로 + {{htmlelement("script")}}와 + {{htmlelement("template")}}을 혼합 가능.
또는, 하나 + 이상의 {{htmlelement("div")}}. 선택적으로 + {{htmlelement("script")}}, {{htmlelement("template")}} + 혼합 가능. +

+
태그 생략불가능, 시작과 끝에 태그를 추가 필수.
가능한 부모 요소 + 플로우 콘텐츠를 허용하는 모든 요소. +
암시적 ARIA 역할 + 해당 역할 없음 +
가능한 ARIA 역할 + group, + list, + none, + presentation +
DOM 인터페이스{{domxref("HTMLDListElement")}}
## 명세