9
9
\_/__/
10
10
```
11
11
12
- # Underscore.go [ ![ GoDoc] ( https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg )] ( https://godoc.org/github.com/ahl5esoft/golang-underscore ) [ ![ Go Report Card] ( https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore )] ( https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore ) ![ Version] ( https://img.shields.io/badge/version-1.2 .0-green.svg )
12
+ # Underscore.go [ ![ GoDoc] ( https://godoc.org/github.com/ahl5esoft/golang-underscore?status.svg )] ( https://godoc.org/github.com/ahl5esoft/golang-underscore ) [ ![ Go Report Card] ( https://goreportcard.com/badge/github.com/ahl5esoft/golang-underscore )] ( https://goreportcard.com/report/github.com/ahl5esoft/golang-underscore ) ![ Version] ( https://img.shields.io/badge/version-1.4 .0-green.svg )
13
13
like <a href =" http://underscorejs.org/ " >underscore.js</a >, but for Go
14
14
15
15
## Installation
@@ -24,11 +24,11 @@ like <a href="http://underscorejs.org/">underscore.js</a>, but for Go
24
24
## Documentation
25
25
26
26
### API
27
+ * [ ` Aggregate ` ] ( #aggregate )
27
28
* [ ` All ` ] ( #all ) , [ ` AllBy ` ] ( #allBy )
28
29
* [ ` Any ` ] ( #any ) , [ ` AnyBy ` ] ( #anyBy )
29
30
* [ ` AsParallel ` ] ( #asParallel )
30
31
* [ ` Chain ` ] ( #chain )
31
- * [ ` Clone ` ] ( #clone )
32
32
* [ ` Distinct ` ] ( #distinct ) , [ ` DistinctBy ` ] ( #distinctBy )
33
33
* [ ` Each ` ] ( #each )
34
34
* [ ` Filter ` ] ( #where ) , [ ` FilterBy ` ] ( #whereBy )
@@ -46,17 +46,44 @@ like <a href="http://underscorejs.org/">underscore.js</a>, but for Go
46
46
* [ ` Object ` ] ( #object )
47
47
* [ ` Property ` ] ( #property ) , [ ` PropertyRV ` ] ( #propertyRV )
48
48
* [ ` Range ` ] ( #range )
49
- * [ ` Reduce ` ] ( #reduce )
49
+ * [ ` Reduce ` ] ( #aggregate )
50
50
* [ ` Reject ` ] ( #reject ) , [ ` RejectBy ` ] ( #rejectBy )
51
51
* [ ` Reverse ` ] ( #reverse ) , [ ` ReverseBy ` ] ( #reverseBy )
52
52
* [ ` Select ` ] ( #select ) , [ ` SelectBy ` ] ( #selectBy )
53
53
* [ ` Size ` ] ( #size )
54
+ * [ ` Skip ` ] ( #skip )
54
55
* [ ` Sort ` ] ( #sort ) , [ ` SortBy ` ] ( #sortBy )
55
56
* [ ` Take ` ] ( #take )
56
57
* [ ` Uniq ` ] ( #distinct ) , [ ` UniqBy ` ] ( #distinctBy )
57
58
* [ ` Values ` ] ( #values )
58
59
* [ ` Where ` ] ( #where ) , [ ` WhereBy ` ] ( #whereBy )
59
60
61
+ <a name =" aggregate " />
62
+
63
+ ### Aggregate(memo, fn) IEnumerable
64
+ ### Aggregate(source, iterator) IQuery
65
+
66
+ __ Arguments__
67
+
68
+ * ` memo ` - anyType
69
+ * ` iterator ` - func(memo, element or value, key or index) memo
70
+
71
+ __ Examples__
72
+
73
+ ``` go
74
+ dst := make ([]int , 0 )
75
+ Chain2 ([]int {1 , 2 }).Aggregate (make ([]int , 0 ), func (memo []int , n, _ int ) []int {
76
+ memo = append (memo, n)
77
+ memo = append (memo, n+10 )
78
+ return memo
79
+ }).Value (&dst)
80
+ // dst = [1 11 2 12]
81
+ ```
82
+
83
+ __ Same__
84
+
85
+ * ` Reduce `
86
+
60
87
<a name =" all " />
61
88
62
89
### All(predicate) bool
@@ -200,28 +227,6 @@ Chain([]int{1, 2, 1, 4, 1, 3}).Uniq(nil).Group(func(n, _ int) string {
200
227
// len(res) == 2 && ok == true
201
228
```
202
229
203
- <a name =" clone " />
204
-
205
- ### Clone()
206
-
207
- __ Return__
208
-
209
- * interface{}
210
-
211
- __ Examples__
212
-
213
- ``` go
214
- arr := []int {1 , 2 , 3 }
215
- var duplicate []int
216
- Chain (arr).Clone ().Value (&duplicate)
217
- // or
218
- duplicate := Clone (arr)
219
- ok := All (duplicate, func (n, i int ) bool {
220
- return arr[i] == n
221
- })
222
- // ok == true
223
- ```
224
-
225
230
<a name =" distinct " />
226
231
227
232
### Distinct(selector) IEnumerable
@@ -842,38 +847,6 @@ Range2(0, 3, 2).Value(&res)
842
847
// res = [0 2]
843
848
```
844
849
845
- <a name =" reduce " />
846
-
847
- ### Reduce(source, iterator)
848
-
849
- __ Arguments__
850
-
851
- * ` source ` - array
852
- * ` iterator ` - func(memo, element or value, key or index) memo
853
- * ` memo ` - anyType
854
-
855
- __ Return__
856
-
857
- * interface{} - memo
858
-
859
- __ Examples__
860
-
861
- ``` go
862
- var res []int
863
- Chain ([]int {1 , 2 }).Reduce (func (memo []int , n, _ int ) []int {
864
- memo = append (memo, n)
865
- memo = append (memo, n+10 )
866
- return memo
867
- }, make ([]int , 0 )).Value (&res)
868
- // or
869
- res := Reduce ([]int {1 , 2 }, func (memo []int , n, _ int ) []int {
870
- memo = append (memo, n)
871
- memo = append (memo, n+10 )
872
- return memo
873
- }, make ([]int , 0 )).([]int )
874
- // res = [1 11 2 12]
875
- ```
876
-
877
850
<a name =" reject " />
878
851
879
852
### Reject(source, predicate)
@@ -1067,6 +1040,23 @@ l := Size(dict)
1067
1040
// l = 3
1068
1041
```
1069
1042
1043
+ <a name =" skip " />
1044
+
1045
+ ### Skip(count) IEnumerable
1046
+
1047
+ __ Arguments__
1048
+
1049
+ * ` count ` - int
1050
+
1051
+ __ Examples__
1052
+
1053
+ ``` go
1054
+ src := []int {1 , 2 , 3 }
1055
+ dst := make ([]int , 0 )
1056
+ Chain2 (src).Skip (2 ).Value (&dst)
1057
+ // dst = [3]
1058
+ ```
1059
+
1070
1060
<a name =" sort " />
1071
1061
1072
1062
### Sort(source, selector)
@@ -1129,25 +1119,19 @@ res := SortBy(arr, "id").([]testModel)
1129
1119
1130
1120
<a name =" take " />
1131
1121
1132
- ### Take(source, count)
1122
+ ### Take(count) IEnumerable
1123
+ ### Take(count) IQuery
1133
1124
1134
1125
__ Arguments__
1135
1126
1136
- * ` source ` - array or map
1137
1127
* ` count ` - int
1138
1128
1139
- __ Return__
1140
-
1141
- * interface{}
1142
-
1143
1129
__ Examples__
1144
1130
1145
1131
``` go
1146
- arr := []int {1 , 2 , 3 }
1147
- var res []int
1148
- Chain (arr).Take (1 ).Value (&res)
1149
- // or
1150
- res := Take (arr, 1 ).([]int )
1132
+ src := []int {1 , 2 , 3 }
1133
+ dst := make ([]int , 0 )
1134
+ Chain2 (src).Take (1 ).Value (&dst)
1151
1135
// res = [1]
1152
1136
```
1153
1137
@@ -1234,6 +1218,14 @@ __Same__
1234
1218
* ` FilterBy `
1235
1219
1236
1220
## Release Notes
1221
+ ~~~
1222
+ v1.4.0 (2019-06-15)
1223
+ * Reduce、Take支持IEnumerable
1224
+ * IEnumerable增加Aggregate、Skip
1225
+ * IQuery删除Clone
1226
+ * 优化IEnumerable的First、Index、Values
1227
+ ~~~
1228
+
1237
1229
~~~
1238
1230
v1.3.0 (2019-06-09)
1239
1231
* FindIndex、FindIndexBy、Keys、Map、MapBy、Object、Uniq、UniqBy、Values支持IEnumerable
0 commit comments