2
2
* @Author : Ping Qixing
3
3
* @Date : 2017-07-03 08:44:15
4
4
* @Last Modified by: Ping Qixing
5
- * @Last Modified time: 2017-07-04 14:33:12
5
+ * @Last Modified time: 2017-07-05 16:49:06
6
6
* @Description
7
7
*/
8
8
import R from 'ramda' ;
@@ -107,7 +107,7 @@ let arr2 = arr.reduce((newArr, x) => {
107
107
return newArr ;
108
108
} , [ ] ) ;
109
109
110
- console . log ( arr2 ) ;
110
+ // console.log(arr2);
111
111
112
112
// 而transduce就是执行`变形`和`累积`两个运算,让代码具备更高的复用性。
113
113
@@ -121,20 +121,76 @@ let append = (newArr, x) => {
121
121
} ;
122
122
123
123
let r10 = R . transduce ( R . map ( plusOne ) , append , [ ] , arr ) ;
124
- console . log ( r10 ) ;
124
+ // console.log(r10);
125
125
126
126
// or
127
127
let r11 = R . into ( [ ] , R . map ( R . add ( 1 ) ) , arr ) ;
128
- console . log ( r11 ) ;
128
+ // console.log(r11);
129
129
130
130
let basket = [
131
- { item : 'apples' , per : 0.95 , count : 3 , cost : 2.85 } ,
132
- { item : 'peaches' , per : 0.80 , count : 2 , cost : 1.60 } ,
133
- { item : 'plums' , per : 0.55 , count : 4 , cost : 2.20 }
131
+ { item : 'apples' , per : 0.95 , count : 3 , cost : 2.85 , time : 1499231281164 } ,
132
+ { item : 'peaches' , per : 0.80 , count : 2 , cost : 1.60 , time : 1499231281264 } ,
133
+ { item : 'plums' , per : 0.55 , count : 4 , cost : 2.20 , time : 1499231281364 }
134
134
] ;
135
135
136
136
let add = ( a , b ) => a + b ;
137
137
let priceSum = R . reduce ( add , 0 ) ;
138
138
// console.log(R.pluck('cost')(basket));
139
139
let totalPrice = R . compose ( priceSum , R . pluck ( 'cost' ) ) ;
140
- console . log ( totalPrice ( basket ) ) ;
140
+ totalPrice ( basket ) ;
141
+
142
+ function print ( items ) {
143
+ R . map ( i => {
144
+ console . log ( `${ i . item } ${ i . cost } ${ i . time } ` ) ;
145
+ } ) ( items ) ;
146
+ }
147
+
148
+ function modify ( item ) {
149
+ if ( item . time instanceof Date ) {
150
+ return { ...item } ;
151
+ } else {
152
+ let t = new Date ( item . time ) ;
153
+ return {
154
+ ...item ,
155
+ time : t
156
+ }
157
+ }
158
+ }
159
+
160
+ R . pipe (
161
+ R . map ( modify ) ,
162
+ print
163
+ ) ( basket ) ;
164
+
165
+ let CARS = [
166
+ { name : 'Ferrari FF' , horsepower : 660 , dollar_value : 700000 , in_stock : true } ,
167
+ { name : 'Spyker C12 Zagato' , horsepower : 650 , dollar_value : 648000 , in_stock : false } ,
168
+ { name : 'Jaguar XKR-S' , horsepower : 550 , dollar_value : 132000 , in_stock : false } ,
169
+ { name : 'Audi R8' , horsepower : 525 , dollar_value : 114200 , in_stock : false } ,
170
+ { name : 'Aston Martin One-77' , horsepower : 750 , dollar_value : 1850000 , in_stock : true } ,
171
+ { name : 'Pagani Huayra' , horsepower : 700 , dollar_value : 1300000 , in_stock : false }
172
+ ] ;
173
+
174
+ let debugTrace = R . curry ( ( tag , v ) => {
175
+ console . log ( tag , v ) ;
176
+ return v ;
177
+ } )
178
+
179
+ let isLastInStock = R . compose ( R . prop ( 'in_stock' ) , R . last ) ;
180
+ // console.log(isLastInStock(CARS));
181
+
182
+ let nameOfFirstCar = R . compose ( R . prop ( 'name' ) , R . head ) ;
183
+ // console.log(nameOfFirstCar(CARS));
184
+
185
+ let _average = function ( xs ) { return R . reduce ( R . add , 0 , xs ) / xs . length ; } ;
186
+ let averageDollarValue = R . compose ( _average , R . pluck ( 'dollar_value' ) ) ;
187
+ // console.log(averageDollarValue(CARS));
188
+
189
+ let _underscore = R . replace ( / \W + / g, '_' ) ; // <-- 无须改动,并在 sanitizeNames 中使用它
190
+
191
+ let sanitizeNames = R . compose ( R . map ( _underscore ) , R . map ( R . toLower ) ) ;
192
+ // console.log(sanitizeNames(['Hello World', 'What You Want?']));
193
+
194
+ let sortByHorsepower = R . sortBy ( R . prop ( 'horsepower' ) ) ;
195
+ let fasterCar = R . compose ( R . last , sortByHorsepower ) ;
196
+ console . log ( `${ fasterCar ( CARS ) . name } is the fastest` ) ;
0 commit comments