1
+ console . log ( 'Using imperative JS' ) ;
2
+
3
+ var printArray = function ( array ) {
4
+ for ( var i = 0 ; i < array . length ; i ++ ) {
5
+ console . log ( array [ i ] ) ;
6
+ }
7
+ } ;
8
+
9
+ printArray ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
10
+
11
+ //how can we abstract the For flow? Can we use a callback for action?
12
+
13
+ console . log ( 'Using functional JS' ) ;
14
+
15
+ var forEach = function ( array , action ) {
16
+ for ( var i = 0 ; i < array . length ; i ++ ) {
17
+ action ( array [ i ] ) ;
18
+ }
19
+ } ;
20
+
21
+ var logItem = function ( item ) {
22
+ console . log ( item ) ;
23
+ } ;
24
+
25
+ forEach ( [ 1 , 2 , 3 , 4 , 5 ] , logItem ) ;
26
+
27
+ //how can we abstract the For flow?
28
+ console . log ( 'Finding the min value in an array - imperative' ) ;
29
+
30
+ var findMinArray = function ( array ) {
31
+ var minValue = array [ 0 ] ;
32
+ for ( var i = 1 ; i < array . length ; i ++ ) {
33
+ if ( minValue > array [ i ] ) {
34
+ minValue = array [ i ] ;
35
+ }
36
+ }
37
+
38
+ return minValue ;
39
+ } ;
40
+
41
+ console . log ( findMinArray ( [ 8 , 6 , 4 , 5 , 9 ] ) ) ;
42
+
43
+ console . log ( 'Finding the min value in an array - functional ES2015' ) ;
44
+ const min_ = function ( array ) {
45
+ return Math . min ( ...array )
46
+ } ;
47
+
48
+ //simplifying using arrow functions
49
+ const min = arr => Math . min ( ...arr ) ;
50
+
51
+ console . log ( min_ ( [ 8 , 6 , 4 , 5 , 9 ] ) ) ;
52
+ console . log ( min ( [ 8 , 6 , 4 , 5 , 9 ] ) ) ;
53
+
54
+ //concat + reduce
55
+ console . log ( 'merge arrays - imperative' ) ;
56
+
57
+ var mergeArrays_ = function ( arrays ) {
58
+ var count = arrays . length ,
59
+ newArray = [ ] ,
60
+ k = 0 ;
61
+ for ( var i = 0 ; i < count ; i ++ ) {
62
+ for ( var j = 0 ; j < arrays [ i ] . length ; j ++ ) {
63
+ newArray [ k ++ ] = arrays [ i ] [ j ] ;
64
+ }
65
+ }
66
+ return newArray ;
67
+ } ;
68
+
69
+ console . log ( mergeArrays_ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 ] , [ 6 ] ] ) ) ;
70
+
71
+ console . log ( 'merge arrays - using concat' ) ;
72
+ var mergeArraysConcat = function ( arrays ) {
73
+ return arrays . reduce ( function ( p , n ) {
74
+ return p . concat ( n ) ;
75
+ } ) ;
76
+ } ;
77
+
78
+ console . log ( mergeArraysConcat ( [ [ 1 , 2 , 3 ] , [ 4 , 5 ] , [ 6 ] ] ) ) ;
79
+
80
+ console . log ( 'merge arrays - ES2015' ) ;
81
+
82
+ const mergeArrays = ( ...arrays ) => [ ] . concat ( ...arrays ) ;
83
+ console . log ( mergeArrays ( [ 1 , 2 , 3 ] , [ 4 , 5 ] , [ 6 ] ) ) ;
84
+
85
+ console . log ( 'sum values of arrays - imperative' ) ;
86
+ var sumValues = function ( array ) {
87
+ var total = array [ 0 ] ;
88
+ for ( var i = 1 ; i < array . length ; i ++ ) {
89
+ total += array [ i ] ;
90
+ }
91
+ return total ;
92
+ } ;
93
+
94
+ console . log ( sumValues ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ;
95
+
96
+ //reduce
97
+ console . log ( 'sum values of arrays - functional' ) ;
98
+ var sum_ = function ( array ) {
99
+ return array . reduce ( function ( a , b ) {
100
+ return a + b ;
101
+ } )
102
+ } ;
103
+
104
+ console . log ( sum_ ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ;
105
+
106
+ console . log ( 'sum values of arrays - ES2015' ) ;
107
+ const sum = arr => arr . reduce ( ( a , b ) => a + b ) ;
108
+
109
+ console . log ( sum ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ;
110
+
111
+ //map
112
+ var daysOfWeek = [
113
+ { name : 'Monday' , value : 1 } ,
114
+ { name : 'Tuesday' , value : 2 } ,
115
+ { name : 'Wednesday' , value : 7 }
116
+ ] ;
117
+
118
+ var daysOfWeekValues_ = [ ] ;
119
+ for ( var i = 0 ; i < daysOfWeek . length ; i ++ ) {
120
+ daysOfWeekValues_ . push ( daysOfWeek [ i ] . value ) ;
121
+ }
122
+
123
+ //to
124
+ var daysOfWeekValues = daysOfWeek . map ( function ( day ) {
125
+ return day . value ;
126
+ } ) ;
127
+ console . log ( daysOfWeekValues ) ;
128
+
129
+
130
+ //filter
131
+ var positiveNumbers_ = function ( array ) {
132
+ var positive = [ ] ;
133
+ for ( var i = 0 ; i < array . length ; i ++ ) {
134
+ if ( array [ i ] >= 0 ) {
135
+ positive . push ( array [ i ] ) ;
136
+ }
137
+ }
138
+ return positive ;
139
+ }
140
+ console . log ( positiveNumbers_ ( [ - 1 , 1 , 2 , - 2 ] ) ) ;
141
+
142
+ var positiveNumbers = function ( array ) {
143
+ return array . filter ( function ( num ) {
144
+ return num >= 0 ;
145
+ } )
146
+ } ;
147
+ console . log ( positiveNumbers ( [ - 1 , 1 , 2 , - 2 ] ) ) ;
0 commit comments