質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2422閲覧

[Swift]多次元配列の結合

hasa

総合スコア7

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/08/09 11:24

編集2017/08/09 11:37

###前提・実現したいこと
Swiftで下記コードのような年と収入の多次元配列a,bを結合させて同じ年の収入を足し合わせたいのですが、うまく配列処理ができません。

###該当のソースコード

swift

1 2struct Income { 3 let year: Int 4 let income: Int 5 6 init(year: Int, income: Int) { 7 self.year = year 8 self.income = income 9 } 10} 11 12class Sample { 13 let a1 = Income(year: 2000, income: 100000) 14 let a2 = Income(year: 2001, income: 100000) 15 let a3 = Income(year: 2002, income: 100000) 16 17 let b1 = Income(year: 2001, income: 100000) 18 let b2 = Income(year: 2002, income: 100000) 19 let b3 = Income(year: 2003, income: 100000) 20 21 func sample() { 22 let a = [a1, a2, a3] 23 let b = [b1, b2, b3] 24 } 25}

###やりたいこと

swift

1class Sample { 2 let ab1 = Income(year: 2000, income: 100000) 3 let ab2 = Income(year: 2001, income: 200000) 4 let ab3 = Income(year: 2002, income: 200000) 5 let ab4 = Income(year: 2003, income: 100000) 6 7 func sample() { 8 let ab = [ab1, ab2, ab3] 9 } 10}

どなたかご教授いただけたらと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

swift

1let ab = a + b 2var years = Set<Int>() 3 4ab.forEach { years.insert($0.year) } 5 6let addedAb = years.map { year in 7 Income(year: year, 8 income: ab.filter { $0.yaer == yaer }.reduce(0) { $0.0 + $0.1.income }) 9}

投稿2017/08/09 14:12

MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hasa

2017/08/09 15:21

ありがとうございます!! やりたいことできました!! 配列の処理が苦手なのですが、勉強法や分かりやすい参考文献などありませんでしょうか?
MasakiHori

2017/08/10 02:05

僕はちょっと特殊だと思うので参考になるかどうかわかりませんが、 Swiftは関数型プログラミングが可能なので関数型プログラミングに慣れようという目標で 0, for文 while文などの繰り返し分は使わない 1, ArrayやDictionay, Collection, Sequenceで利用可能な関数を少しづつ覚える 2, 直面する問題、課題をパズルとして考えて解く 3, 新しい関数を覚えたら以前解いた課題がそれを使って簡単にならないかを考える 4, Qiitaとかブログとかをその時点で意味が分からなくてもとにかく読む とかです。 それでは問題です! この回答にはCollectionやSequenceで非常によく使われる関数 forEach, map, filter, reduce が含まれています。 それぞれがどういう時に使う関数なのか理解されていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問