0Pricing
Swift Academy · レッスン

配列に対するMap、Filter、Reduce

関数型の高階関数で配列を変換します。

「配列に対するMap、Filter、Reduce」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

Swift の高階関数である `map`、`filter`、`reduce` は、コレクションを変更せずに変換します。意図が明確になり、エラーが起こりやすいループをなくせます。

map — すべての要素を変換

```swift let nums = [1, 2, 3, 4] let doubled = nums.map { $0 * 2 } // [2,4,6,8] let strings = nums.map { "Item \($0)" } // ["Item 1","Item 2",...] ``` `map` は各要素にクロージャを適用し、結果からなる新しい配列を返します。

filter — 条件に一致する要素を残す

```swift let scores = [45, 80, 92, 37, 68] let passing = scores.filter { $0 >= 60 } // [80,92,68] let even = (1...10).filter { $0 % 2 == 0 } // [2,4,6,8,10] ``` `filter` は、クロージャが `true` を返す要素だけを含む新しい配列を返します。

reduce — 1 つの値にまとめる

```swift let nums = [1, 2, 3, 4, 5] let sum = nums.reduce(0) { $0 + $1 } // 15 let product = nums.reduce(1, *) // 120 let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc" ```

map、filter、reduce のチェーン

```swift let result = (1...10) .filter { $0 % 2 == 0 } // [2,4,6,8,10] .map { $0 * $0 } // [4,16,36,64,100] .reduce(0, +) // 220 ``` チェーンは左から右へ読み進められるため、データ処理の流れを明確に表現できます。

compactMap — 変換してアンラップする

```swift let strings = ["1","two","3","four","5"] let nums = strings.compactMap { Int($0) } // [1,3,5] ``` `compactMap` は変換を行い、nil の結果を取り除きます。失敗する可能性がある変換に最適です。

flatMap — 入れ子の配列を平坦化する

```swift let nested = [[1,2,3],[4,5],[6]] let flat = nested.flatMap { $0 } // [1,2,3,4,5,6] let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator: " ") } // ["hello","world","foo","bar"] ```

forEach — 副作用のみを実行する

```swift [1, 2, 3].forEach { print($0) } ``` `forEach` は `for-in` ループに似ていますが、`break` や `continue` は使用できません。副作用だけが必要で、途中で抜ける必要がない場合に使用してください。

辞書に対する reduce(into:)

```swift let words = ["apple","banana","apricot","blueberry"] let grouped = words.reduce(into: [Character:[String]]()) { dict, word in let key = word.first! dict[key, default: []].append(word) } // ["a":["apple","apricot"],"b":["banana","blueberry"]] ```

パフォーマンスのための遅延チェーン

```swift let lazyResult = (1...1_000_000) .lazy .filter { $0 % 7 == 0 } .map { $0 * 2 } .prefix(5) // No intermediate arrays created! ``` チェーンの先頭に `.lazy` を追加すると、必要になった時点で評価されます。

クイックチェック

各要素を変換し、nil の結果を取り除く関数はどれですか?

まとめ

主なポイント: • `map` — すべての要素を変換して新しい配列を作成する • `filter` — 条件に一致する要素を残す • `reduce` — 1 つの累積値に畳み込む • `compactMap` — 変換して nil を破棄する • `flatMap` — 変換して入れ子のシーケンスを平坦化する • `.lazy` とチェーンして、中間配列の割り当てを避ける 次は、2 次元配列と入れ子のコレクションです。

よくある質問

「配列に対するMap、Filter、Reduce」レッスンは無料ですか?

はい。「配列に対するMap、Filter、Reduce」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「配列に対するMap、Filter、Reduce」で何を学びますか?

関数型の高階関数で配列を変換します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「配列に対するMap、Filter、Reduce」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 配列の作成と変更
  2. 並べ替え、検索、スライス
  3. 配列に対するMap、Filter、Reduce
  4. 2次元配列とネストしたコレクション
← Swift Academyに戻る