Swiftには配列の全要素に同じ処理を行いたいときに便利なmapがあります。
この記事では、
・mapとは
・数値型の配列にmapを使用する方法
・文字列型の配列にmapを使用する方法
というmapの基本的な解説から、
・Dictionaly(辞書)にmapを使用する
などの応用的な使い方に関しても解説していきます。
今回はそんなmapの使い方についてわかりやすく解説します!
※この記事ではSwift3.1を使用しています。
mapとは
mapとは配列の全要素に同じ処理を適用する場合に使用します。
例えば数値型の要素が格納されている配列の全要素に数値を加算したり、文字列の配列の場合は文字列を結合するときなどに使用します。
書き方:
配列名.map{ $0 * 3}
mapではクロージャの引数を省略する場合に使用するコード$0を指定します。
次に全要素に対して行いたい処理(ここでは各要素を3倍)を指定します。
mapはforeach文のようにループの中で要素を1つずつ変更する必要が無く、簡単に記述できるので全要素同じ処理を適用したい場合はmapを使用しましょう。
mapの基本的な使い方
ここではmapの使い方について見ていきましょう。
数値型の配列
以下ではInt型の数値を格納した配列の全要素に対して、値を3倍にしています。
サンプルプログラム1
let valueArray1 = [100, 200, 300, 400, 500] //全要素を3倍にする let valueArray2 = valueArray1.map { $0 * 3 } print(valueArray2)
実行結果:
[300, 600, 900, 1200, 1500]
このようにmapを使えば全要素の値を3倍にした配列を簡単に作れます。
また、以下のように消費税を計算したいときも便利です。
サンプルプログラム2
let valueArray1 = [100, 200, 300, 400, 500] var valueArray2: [Double] //消費税を計算(8%) valueArray2 = valueArray1.map { Double($0) * 0.08 } print(valueArray2.map {Int($0)})
実行結果:
[8, 16, 24, 32, 40]
Int型の配列に対して浮動小数点演算を行いますので、サンプルのようにInt型の配列をキャストする必要があります。
文字列型の配列
以下では文字列Stringの値に文字列を結合しています。
String型の配列にmapで文字列を結合する場合は「map { $0 +(プラス)演算子 文字列}」となります。
サンプルプログラム
let strArray1 = ["apple", "orange", "banana"] //配列の全要素に文字列を結合 let strArray2 = strArray1.map { $0 + "_fruits." } print(strArray2)
実行結果:
["apple_fruits.", "orange_fruits.", "banana_fruits."]
Dictionalyにmapを使用する
mapはDictionaly(辞書)の全要素にも適用できます。
以下のサンプルではDictionalyの値に10を加算しています。
サンプルプログラム
let fruits = ["apple":100, "orange":80, "banana":150] //全要素に10を加算 let fruits_value = fruits.map { ($0, $1 + 10) } print(fruits_value)
実行結果:
[("orange", 90), ("banana", 160), ("apple", 110)]
まとめ
ここではmapを使用して配列の全要素に同じ処理を適用する方法や、Dictionaly(辞書)の値に全要素を適用する方法について解説しました。
mapを使用すれば、配列の全要素に同じ処理を行うことができるので非常に便利です。
もし、mapの使い方を忘れてしまったら、この記事を思い出してくださいね!