質問するログイン新規登録

回答編集履歴

1

必須メソッドを忘れてた

2018/03/24 14:04

投稿

miyabi-sun
miyabi-sun

スコア21510

answer CHANGED
@@ -59,6 +59,42 @@
59
59
  result = scores; // 570
60
60
  ```
61
61
 
62
+ chainも凄まじいですが、
63
+ それとシナジーが効く筆頭としてtoPairsとfromPairsは欠かせないですね。
64
+ 素のJSはArray→Arrayはそこそこ強くなりましたが、ObjectとArrayの相互変換が弱いのでLodashを始めとした関数型プログラミングライブラリの独壇場だと思います。
65
+
66
+ JSでも`Object.entries(obj).map(fn1).reduce(fn2, {})`というルートで可能ですが、
67
+ Lodashの`_(obj).toPairs().map(fn).fromPairs()`のコンボで整形する方がラムダ1個で済みますし何やってるかも簡潔に済むと思います。
68
+
69
+ ```JavaScript
70
+ var users = [
71
+ {name: "taro", score: 100},
72
+ {name: "jiro", score: 80},
73
+ {name: "saburo", score: 90}
74
+ ];
75
+ result = users
76
+ .map(it => [it.name, it])
77
+ .fromPairs()
78
+ .value();
79
+ ```
80
+
81
+ ```JSON
82
+ {
83
+ "taro": {
84
+ "name": "taro",
85
+ "score": 100
86
+ },
87
+ "jiro": {
88
+ "name": "jiro",
89
+ "score": 80
90
+ },
91
+ "saburo": {
92
+ "name": "saburo",
93
+ "score": 90
94
+ }
95
+ }
96
+ ```
97
+
62
98
  後はcurryですね。
63
99
  JavaScriptはES2015でクラスが使えるようになってDIが楽になったとはいえ、
64
100
  Promiseやコールバック関数ではまだまだ普通の関数が要求されるケースが多いです。