Swiftの辞書で全ての値を集計する方法について記載します。
目次
全ての値を集計する方法
reduce メソッド を使用します。
引数
第一引数:累積初期値(加算の場合は0、乗算の場合は1)
第二引数:計算式(クロージャ)
戻り値
計算結果
1. 全ての要素の合計値を計算
次の例では、辞書の各要素の値( 100, 200, 300 )を全て加算します。
1 2 3 4 5 6 7 8 |
let dict = [ "apple": 100 , "orange": 200, "banana":300 ] let result1 = dict.reduce(0, { x, element in return x + element.value }) print( result1 ) // 600 |
第一引数の累積初期値を 0 で指定しているため、厳密には 0 + 100 + 200 + 300 という計算を行っています。
クロージャは要素ごとに呼び出され、前の要素の計算結果が x に代入されます。
初回の呼び出し時に x には、累積初期値の 0 が代入されます。
次の例は、累積初期値を 50 で指定しているため、先ほどと計算結果が異なります。
1 2 3 4 5 6 7 8 |
let dict = [ "apple": 100 , "orange": 200, "banana":300 ] let result2 = dict.reduce(50, { x, element in return x + element.value }) print(result2) // 650 |
累積初期値が 50 のため、50 + 100 + 200 + 300 という計算が行われます。
2. 全ての要素の積を計算
積を求める場合は、累積初期値を 1 で指定します。
1 2 3 4 5 6 7 8 |
let dict = [ "apple": 1 , "orange": 2, "banana":3 ] let result3 = dict.reduce(1, { x, element in return x * element.value }) print(result3) // 6 ( 1 * 1 * 2 * 3 ) |