月ノ書

SwiftでのMapと連想配列応用|配列・Dictionaryの便利メソッド活用

この記事でわかること
  • SwiftでのMap操作の基本と応用
  • 配列やDictionaryに対するmapfilterreduceの使い方
  • キーと値を使った変換やデータ整理テクニック
  • 実用例で学ぶデータ処理の効率化

SwiftのMapとは

Swiftではmapというメソッドを使うことで、配列や辞書の要素を変換することができます

map以外にも、filterreduceを組み合わせると、データ処理がもっと柔軟になります

配列でのMap応用

基本

let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }  // [1, 4, 9, 16, 25]

Filterと組み合わせ

let evenSquares = numbers.filter { $0 % 2 == 0 }.map { $0 * $0 }  // [4, 16]

Reduceで合計を計算

let sum = numbers.reduce(0, +)  // 15

DictionaryでのMap応用

値だけ変換

let capitals = ["日本": "東京", "フランス": "パリ"]
let upperCapitals = capitals.mapValues { $0.uppercased() }
// ["日本": "東京", "フランス": "PARIS"]

条件付きで抽出して変換

let filteredCapitals = capitals
    .filter { $0.key.hasPrefix("日") }
    .mapValues { $0 + "市" }
// ["日本": "東京市"]

実践的なデータ整理テクニック

文字列配列をDictionaryに変換

let fruits = ["りんご", "みかん", "バナナ"]
let fruitLengths = Dictionary(uniqueKeysWithValues: fruits.map { ($0, $0.count) })
// ["りんご": 3, "みかん": 3, "バナナ": 3]

Dictionaryをソート

let sortedCapitals = capitals.sorted { $0.key < $1.key }
for (country, capital) in sortedCapitals {
    print("\(country): \(capital)")
}

Dictionaryの値の集計

let sales = ["A": 100, "B": 200, "C": 150]
let totalSales = sales.values.reduce(0, +)  // 450

まとめ

SwiftのmapmapValuesを使うと、配列やDictionaryの要素を簡単に変換できる
filterreduceと組み合わせると、条件抽出や集計などの高度なデータ処理も効率的に行える
実務でよくあるデータ整理・変換の多くは、この組み合わせでシンプルに書ける
慣れてくると、「一度に変換・集計・フィルタリング」がスマートにできるので、コードがすごく読みやすくなる

学習進捗