Arrayの中身の値を合計する

配列の中から任意のものを取り出し、その中身の数字を合計する方法をメモ。

var peoples: [People] = []
let data1 = People(name: "John",  height: 160, weight: 60)
let data2 = People(name: "Bob", height: 190, weight: 70)
let data3 = People(name: "Jack", height: 200, weight: 80)

peoples.append(data1)
peoples.append(data2)
peoples.append(data3)

let sumHeight = peoples.map(\.height).reduce(0, +)
let sumWeight = peoples.map(\.weight).reduce(100, +)
let multipleWeight = peoples.map(\.weight).reduce(1, *)

print(sumHeight) // 550
print(sumWeight) // 310
print(multipleWeight) // 336000

簡単に解説

.map(\.height)では、各要素のなかからheightだけを取り出し処理を加えることを意味しています。

.reduce(0, +)では、第一引数で初期値、第二引数で符号を指定します。

ちなみに掛け算の場合は初期値に0をいれてしまうと必ず計算結果が0になるので注意しましょう。

コンパクトに書こうとするとここまでシンプルになるんですね!

コメント

タイトルとURLをコピーしました