回答編集履歴

2

コード追加

2020/05/18 09:24

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- `cumax()`(累積最大値)を求めるメソッドは標準ではなさそうなので自分で実装するか、あるいは誰かが作ったものを流用することになると思います。
9
+ `cummax()`(累積最大値)を求めるメソッドは標準ではなさそうなので自分で実装するか、あるいは誰かが作ったものを流用することになると思います。
10
10
 
11
11
 
12
12
 
@@ -19,3 +19,75 @@
19
19
 
20
20
 
21
21
  厄介そうなのは、辞書に入ったデータを`key`(`"timestamp"`など)で取り出すときにオプショナル型になること、また上記のデータ形式だと`Dictionary<String, Array<Any>>`型となり、`value`を取り出すときにダウンキャストしなければならない点がありそうです。
22
+
23
+
24
+
25
+ ---
26
+
27
+ 少しベタな書き方かもしれませんが、たとえばこんな感じで表示することは可能です。
28
+
29
+ 辞書に新しく `cummax` というキーを追加して、そこに累積最大値を入れています。
30
+
31
+
32
+
33
+ なるべくオプショナル型を意識しないで操作するとなるとこんな感じになると思います。
34
+
35
+
36
+
37
+ Playground で確認しました。
38
+
39
+
40
+
41
+ ```swift
42
+
43
+ import UIKit
44
+
45
+
46
+
47
+ var data = [
48
+
49
+ "tiemstamp": ["00:00", "00:01", "00:02", "00:03", "00:04", "00:05", "00:06", "00:07", "00:08", "00:09",
50
+
51
+ "00:10", "00:11", "00:12", "00:13", "00:14", "00:15", "00:16", "00:17", "00:18", "00:19", "00:20"],
52
+
53
+ "data": [0, 2, 3, 4, 5, 6, 2, 4, 6, 7, 2, 6, 5, 8, 4, 5, 6, 8, 9, 5, 10]
54
+
55
+ ]
56
+
57
+
58
+
59
+ if let array = data["data"] as? [Int] {
60
+
61
+ // 初期値
62
+
63
+ var max = array[0]
64
+
65
+ data["cummax"] = [max]
66
+
67
+
68
+
69
+ for i in 1..<array.count {
70
+
71
+ let cur = array[i]
72
+
73
+
74
+
75
+ max = max > cur ? max : cur
76
+
77
+ data["cummax"]?.append(max)
78
+
79
+ }
80
+
81
+
82
+
83
+ print("\ttimestamp\tdata\tcummax")
84
+
85
+ for i in 0..<array.count {
86
+
87
+ print("(i)\t(data["tiemstamp"]![i])\t\t(data["data"]![i])\t\t(data["cummax"]![i])")
88
+
89
+ }
90
+
91
+ }
92
+
93
+ ```

1

誤字の修正

2020/05/18 09:24

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -18,4 +18,4 @@
18
18
 
19
19
 
20
20
 
21
- 厄介そうなのは、辞書に入ったデータを`key`(`"timestamp"`など)で取り出すときにオプショナル型になること、また上記のデータ形式だと`Dictionary<String, Any>`型となり、`value`を取り出すときにダウンキャストしなければならない点がありそうです。
21
+ 厄介そうなのは、辞書に入ったデータを`key`(`"timestamp"`など)で取り出すときにオプショナル型になること、また上記のデータ形式だと`Dictionary<String, Array<Any>>`型となり、`value`を取り出すときにダウンキャストしなければならない点がありそうです。