回答編集履歴

1

追記

2019/10/29 14:02

投稿

winterboum
winterboum

スコア23349

test CHANGED
@@ -17,3 +17,43 @@
17
17
  余談ですが
18
18
 
19
19
  dataは複数形です。単数形は datum。ので、datasはちょっと違和感あります。
20
+
21
+ ####################
22
+
23
+ で、やりたいことが合っているとして、
24
+
25
+ DBを引くのはmaisumakunさんの方法で行って、そのあとですが、単純には
26
+
27
+ ```
28
+
29
+ arys = accounts.map do |acct|
30
+
31
+ a_name= acct&.address
32
+
33
+ {quota: infos.find{|info| info.name == a_name}&.quota&.hoge}
34
+
35
+ end
36
+
37
+ ```
38
+
39
+ ですが、これですと accounts.map で1万回、infos.find で平均5000回、計5千万回のloopになります。
40
+
41
+ 遅いかも。
42
+
43
+ 早くなるかどうか未確認ですが
44
+
45
+ info_by_name = infos.map{|info| [info.name,info&.quota&.hoge]}.to_h
46
+
47
+ としておいて
48
+
49
+ ```
50
+
51
+ arys = accounts.map do |acct|
52
+
53
+ {quota: info_by_name[acct&.address]}
54
+
55
+ end
56
+
57
+ ```
58
+
59
+ とすると早いかも。