Skip to content

Commit b9884da

Browse files
azuclaude
andauthored
feat(array): 配列の章にArray.prototype.flatMapを追加 (#1836)
## Summary - 配列の章にArray.prototype.flatMapメソッドの説明を追加 - Iterator章との整合性を確保(Iterator章からのリンクが機能するように) - ES2019仕様として適切な位置(flat()メソッドの後)に配置 - flatとflatMapをmapより後ろに移動する ## Motivation - Iterator章では`flatMap()`を紹介しているが、配列の章では未紹介だった - 配列の章とIterator章のバランスを保つため、配列の章にも`flatMap()`を追加する必要があった ## Changes - `source/basic/array/README.md`に`flatMap`メソッドのセクションを追加 - メソッドの基本的な使い方 - `map()`と`flat()`の組み合わせとの比較 - 1段階のみのフラット化についての説明 ## Test plan - [x] textlintによるリント確認 - [x] コード例の動作確認 - [x] Iterator章からのリンク(`#array-flatmap`)が正しく機能することを確認 Fixes #1835 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <[email protected]>
1 parent 56ec2b8 commit b9884da

File tree

1 file changed

+46
-28
lines changed

1 file changed

+46
-28
lines changed

source/basic/array/README.md

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -567,34 +567,6 @@ const newArray = ["X", ...array, "Z"];
567567
console.log(newArray); // => ["X", "A", "B", "C", "Z"]
568568
```
569569

570-
## [ES2019] 配列をフラット化 {#flat}
571-
572-
Arrayの`flat`メソッド<sup>[ES2019]</sup>を使うことで、多次元配列をフラットな配列に変換できます。
573-
引数を指定しなかった場合は1段階のみのフラット化ですが、引数に渡す数値でフラット化する深さを指定できます。
574-
配列をすべてフラット化する場合には、無限を意味する`Infinity`を値として渡すことで実現できます。
575-
576-
{{book.console}}
577-
<!-- doctest:meta:{ "ECMAScript": "2019" } -->
578-
```js
579-
const array = [[["A"], "B"], "C"];
580-
// 引数なしは1を指定した場合と同じ
581-
console.log(array.flat()); // => [["A"], "B", "C"]
582-
console.log(array.flat(1)); // => [["A"], "B", "C"]
583-
console.log(array.flat(2)); // => ["A", "B", "C"]
584-
// すべてをフラット化するにはInfinityを渡す
585-
console.log(array.flat(Infinity)); // => ["A", "B", "C"]
586-
```
587-
588-
また、Arrayの`flat`メソッドは必ず新しい配列を作成して返すメソッドです。
589-
そのため、これ以上フラット化できない配列をフラット化しても、同じ要素を持つ新しい配列を返します。
590-
591-
{{book.console}}
592-
<!-- doctest:meta:{ "ECMAScript": "2019" } -->
593-
```js
594-
const array = ["A", "B", "C"];
595-
console.log(array.flat()); // => ["A", "B", "C"]
596-
```
597-
598570
## 配列から要素を削除 {#delete-element}
599571

600572
### `Array.prototype.splice` {#splice}
@@ -999,6 +971,52 @@ function sum(array) {
999971
console.log(sum(array)); // => 6
1000972
```
1001973

974+
### [ES2019] `Array.prototype.flat`メソッド {#flat}
975+
976+
Arrayの`flat`メソッド<sup>[ES2019]</sup>を使うことで、多次元配列をフラットな配列に変換できます。
977+
引数を指定しなかった場合は1段階のみのフラット化ですが、引数に渡す数値でフラット化する深さを指定できます。
978+
配列をすべてフラット化する場合には、無限を意味する`Infinity`を値として渡すことで実現できます。
979+
980+
{{book.console}}
981+
<!-- doctest:meta:{ "ECMAScript": "2019" } -->
982+
```js
983+
const array = [[["A"], "B"], "C"];
984+
// 引数なしは1を指定した場合と同じ
985+
console.log(array.flat()); // => [["A"], "B", "C"]
986+
console.log(array.flat(1)); // => [["A"], "B", "C"]
987+
console.log(array.flat(2)); // => ["A", "B", "C"]
988+
// すべてをフラット化するにはInfinityを渡す
989+
console.log(array.flat(Infinity)); // => ["A", "B", "C"]
990+
```
991+
992+
また、Arrayの`flat`メソッドは必ず新しい配列を作成して返すメソッドです。
993+
そのため、これ以上フラット化できない配列をフラット化しても、同じ要素を持つ新しい配列を返します。
994+
995+
{{book.console}}
996+
<!-- doctest:meta:{ "ECMAScript": "2019" } -->
997+
```js
998+
const array = ["A", "B", "C"];
999+
console.log(array.flat()); // => ["A", "B", "C"]
1000+
```
1001+
1002+
### [ES2019] `Array.prototype.flatMap`メソッド {#array-flatmap}
1003+
1004+
Arrayの`flatMap`メソッド<sup>[ES2019]</sup>は、配列の各要素に対してコールバック関数を適用し、その結果を1段階フラット化した新しい配列を返します。
1005+
つまり、`flatMap`メソッドは、`map`してから`flat(1)`するのと同じ結果になります。
1006+
1007+
`flatMap`メソッドのコールバック関数には`map`メソッドと同様に`要素, インデックス, 配列`が引数として渡されます。
1008+
1009+
{{book.console}}
1010+
<!-- doctest:meta:{ "ECMAScript": "2019" } -->
1011+
```js
1012+
const array = [1, 2, 3];
1013+
// 各要素を2倍にしてから、その値を配列として返す
1014+
const doubled = array.flatMap((value) => {
1015+
return [value, value * 2];
1016+
});
1017+
console.log(doubled); // => [1, 2, 2, 4, 3, 6]
1018+
```
1019+
10021020
### [ES2024] `Object.groupBy`静的メソッド {#object-group-by}
10031021

10041022
`Array.prototype.reduce`メソッドを使うことで、配列から数値やオブジェクトなど任意の値を作成できます。

0 commit comments

Comments
 (0)