diff --git a/README.md b/README.md index a222e6e..453d736 100644 --- a/README.md +++ b/README.md @@ -586,59 +586,167 @@ import "github.com/duke-git/lancet/v2/slice" #### Function list: -- [AppendIfAbsent](https://github.com/duke-git/lancet/blob/main/docs/slice.md#AppendIfAbsent) -- [Contain](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Contain) -- [ContainSubSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ContainSubSlice) -- [Chunk](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Chunk) -- [Compact](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Compact) -- [Concat](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Concat) -- [Count](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Count) -- [CountBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#CountBy) -- [Difference](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Difference) -- [DifferenceBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceBy) -- [DifferenceWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceWith) -- [DeleteAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DeleteAt) -- [Drop](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Drop) -- [Equal](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Equal) -- [EqualWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#EqualWith) -- [Every](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Every) -- [Filter](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Filter) -- [Find](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Find) -- [FindLast](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FindLast) -- [Flatten](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Flatten) -- [FlattenDeep](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FlattenDeep) -- [ForEach](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ForEach) -- [GroupBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#GroupBy) -- [GroupWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#GroupWith) -- [IntSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice.md#IntSlice) -- [InterfaceSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InterfaceSlice) -- [Intersection](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Intersection) -- [InsertAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InsertAt) -- [IndexOf](https://github.com/duke-git/lancet/blob/main/docs/slice.md#IndexOf) -- [LastIndexOf](https://github.com/duke-git/lancet/blob/main/docs/slice.md#LastIndexOf) -- [Map](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Map) -- [Merge](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Merge) -- [Reverse](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reverse) -- [Reduce](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reduce) -- [Replace](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Replace) -- [ReplaceAll](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ReplaceAll) -- [Repeat](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Repeat) -- [Shuffle](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Shuffle) -- [Sort](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Sort) -- [SortBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SortBy) -- [SortByFielddeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SortByField) -- [Some](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Some) -- [StringSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice.md#StringSlice) -- [SymmetricDifference](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SymmetricDifference) -- [ToSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ToSlice) -- [ToSlicePointer](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ToSlicePointer) -- [Unique](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Unique) -- [UniqueBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UniqueBy) -- [Union](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Union) -- [UnionBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UnionBy) -- [UpdateAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UpdateAt) -- [Without](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Without) -- [KeyBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#KeyBy) +- **AppendIfAbsent** : if the item is absent,append it to the slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#AppendIfAbsent)] + [[play](https://go.dev/play/p/GNdv7Jg2Taj)] +- **Contain** : check if the value is in the slice or not. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Contain)] + [[play](https://go.dev/play/p/_454yEHcNjf)] +- **ContainSubSlice** : check if the slice contain a given subslice or not. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ContainSubSlice)] + [[play](https://go.dev/play/p/bcuQ3UT6Sev)] +- **Chunk** : creates a slice of elements split into groups the length of size. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Chunk)] + [[play](https://go.dev/play/p/b4Pou5j2L_C)] +- **Compact** : creates an slice with all falsey values removed. The values false, nil, 0, and "" are falsey. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Compact)] + [[play](https://go.dev/play/p/pO5AnxEr3TK)] +- **Concat** : creates a new slice concatenating slice with any additional slices. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Concat)] + [[play](https://go.dev/play/p/gPt-q7zr5mk)] +- **Count** : returns the number of occurrences of the given item in the slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Count)] + [[play](https://go.dev/play/p/Mj4oiEnQvRJ)] +- **CountBy** : iterates over elements of slice with predicate function, returns the number of all matched elements. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#CountBy)] + [[play](https://go.dev/play/p/tHOccTMDZCC)] +- **Difference** : creates an slice of whose element in slice but not in compared slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Difference)] + [[play](https://go.dev/play/p/VXvadzLzhDa)] +- **DifferenceBy** : accepts iteratee which is invoked for each element of slice and values to generate the criterion by which they're compared. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceBy)] + [[play](https://go.dev/play/p/DiivgwM5OnC)] +- **DifferenceWith** : accepts comparator which is invoked to compare elements of slice to values. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceWith)] + [[play](https://go.dev/play/p/v2U2deugKuV)] +- **DeleteAt** : delete the element of slice from specific start index to end index - 1. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DeleteAt)] + [[play](https://go.dev/play/p/pJ-d6MUWcvK)] +- **Drop** : creates a slice with `n` elements dropped from the beginning when n > 0, or `n` elements dropped from the ending when n < 0. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Drop)] + [[play](https://go.dev/play/p/pJ-d6MUWcvK)] +- **Equal** : checks if two slices are equal: the same length and all elements' order and value are equal. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Equal)] + [[play](https://go.dev/play/p/WcRQJ37ifPa)] +- **EqualWith** : checks if two slices are equal with comparator func. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#EqualWith)] + [[play](https://go.dev/play/p/b9iygtgsHI1)] +- **Every** : return true if all of the values in the slice pass the predicate function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Every)] + [[play](https://go.dev/play/p/R8U6Sl-j8cD)] +- **Filter** : iterates over elements of slice, returning an slice of all elements pass the predicate function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Filter)] + [[play](https://go.dev/play/p/SdPna-7qK4T)] +- **Find** : iterates over elements of slice, returning the first one that passes a truth test on predicate function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Find)] + [[play](https://go.dev/play/p/CBKeBoHVLgq)] +- **FindLast** : return the last item that passes a truth test on predicate function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FindLast)] + [[play](https://go.dev/play/p/FFDPV_j7URd)] +- **Flatten** : flattens slice one level. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Flatten)] + [[play](https://go.dev/play/p/hYa3cBEevtm)] +- **FlattenDeep** : flattens slice recursive to one level. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#FlattenDeep)] + [[play](https://go.dev/play/p/yjYNHPyCFaF)] +- **ForEach** : iterates over elements of slice and invokes function for each element. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ForEach)] + [[play](https://go.dev/play/p/DrPaa4YsHRF)] +- **GroupBy** : iterate over elements of the slice, each element will be group by criteria, returns two slices. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#GroupBy)] + [[play](https://go.dev/play/p/QVkPxzPR0iA)] +- **GroupWith** : return a map composed of keys generated from the resultults of running each element of slice thru iteratee. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#GroupWith)] + [[play](https://go.dev/play/p/ApCvMNTLO8a)] +- **IntSlicedeprecated** : convert param to int slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#IntSlice)] + [[play](https://go.dev/play/p/FdQXF0Vvqs-)] +- **InterfaceSlicedeprecated** : convert param to interface slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InterfaceSlice)] + [[play](https://go.dev/play/p/FdQXF0Vvqs-)] +- **Intersection** : creates a slice of unique elements that included by all slices. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Intersection)] + [[play](https://go.dev/play/p/anJXfB5wq_t)] +- **InsertAt** : insert the value or other slice into slice at index. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InsertAt)] + [[play](https://go.dev/play/p/hMLNxPEGJVE)] +- **IndexOf** : returns the index at which the first occurrence of an item is found in a slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#IndexOf)] + [[play](https://go.dev/play/p/MRN1f0FpABb)] +- **LastIndexOf** : returns the index at which the last occurrence of the item is found in a slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#LastIndexOf)] + [[play](https://go.dev/play/p/DokM4cf1IKH)] +- **Map** : creates an slice of values by running each element of slice thru iteratee function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Map)] + [[play](https://go.dev/play/p/biaTefqPquw)] +- **Merge** : merge all given slices into one slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Merge)] + [[play](https://go.dev/play/p/lbjFp784r9N)] +- **Reverse** : return slice of element order is reversed to the given slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reverse)] + [[play](https://go.dev/play/p/8uI8f1lwNrQ)] +- **Reduce** : creates an slice of values by running each element of slice thru iteratee function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reduce)] + [[play](https://go.dev/play/p/_RfXJJWIsIm)] +- **Replace** : returns a copy of the slice with the first n non-overlapping instances of old replaced by new. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Replace)] + [[play](https://go.dev/play/p/P5mZp7IhOFo)] +- **ReplaceAll** : returns a copy of the slice with all non-overlapping instances of old replaced by new. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ReplaceAll)] + [[play](https://go.dev/play/p/CzqXMsuYUrx)] +- **Repeat** : creates a slice with length n whose elements are passed item. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Repeat)] + [[play](https://go.dev/play/p/1CbOmtgILUU)] +- **Shuffle** : shuffle the slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Shuffle)] + [[play](https://go.dev/play/p/YHvhnWGU3Ge)] +- **Sort** : sorts a slice of any ordered type(number or string). + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Sort)] + [[play](https://go.dev/play/p/V9AVjzf_4Fk)] +- **SortBy** : sorts the slice in ascending order as determined by the less function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SortBy)] + [[play](https://go.dev/play/p/DAhLQSZEumm)] +- **SortByFielddeprecated** : return sorted slice by specific field. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SortByField)] + [[play](https://go.dev/play/p/fU1prOBP9p1)] +- **Some** : return true if any of the values in the list pass the predicate function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Some)] + [[play](https://go.dev/play/p/4pO9Xf9NDGS)] +- **StringSlicedeprecated** : convert param to slice of string. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#StringSlice)] + [[play](https://go.dev/play/p/W0TZDWCPFcI)] +- **SymmetricDifference** : the symmetric difference of two slice, also known as the disjunctive union. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#h42nJX5xMln)] + [[play](https://go.dev/play/p/1CbOmtgILUU)] +- **ToSlice** : returns a slices of a variable parameter transformation. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ToSlice)] + [[play](https://go.dev/play/p/YzbzVq5kscN)] +- **ToSlicePointer** : returns a pointer to the slices of a variable parameter transformation. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ToSlicePointer)] + [[play](https://go.dev/play/p/gx4tr6_VXSF)] +- **Unique** : remove duplicate elements in slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Unique)] + [[play](https://go.dev/play/p/AXw0R3ZTE6a)] +- **UniqueBy** : call iteratee func with every item of slice, then remove duplicated. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UniqueBy)] + [[play](https://go.dev/play/p/UR323iZLDpv)] +- **Union** : creates a slice of unique elements, in order, from all given slices. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Union)] + [[play](https://go.dev/play/p/hfXV1iRIZOf)] +- **UnionBy** : accepts iteratee which is invoked for each element of each slice, then union slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UnionBy)] + [[play](https://go.dev/play/p/HGKHfxKQsFi)] +- **UpdateAt** : update the slice element at index. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UpdateAt)] + [[play](https://go.dev/play/p/f3mh2KloWVm)] +- **Without** : creates a slice excluding all given items. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Without)] + [[play](https://go.dev/play/p/bwhEXEypThg)] +- **KeyBy** : converts a slice to a map based on a callback function. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice.md#KeyBy)] + [[play](https://go.dev/play/p/uXod2LWD1Kg)] + + ### 17. Strutil package contains some functions to manipulate string. diff --git a/README_zh-CN.md b/README_zh-CN.md index d01a166..bc2b965 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -584,58 +584,166 @@ import "github.com/duke-git/lancet/v2/slice" ``` #### 函数列表: - -- [AppendIfAbsent](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#AppendIfAbsent) -- [Contain](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Contain) -- [ContainSubSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ContainSubSlice) -- [Chunk](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Chunk) -- [Compact](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Compact) -- [Concat](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Concat) -- [Count](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Count) -- [CountBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#CountBy) -- [Difference](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Difference) -- [DifferenceBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DifferenceBy) -- [DifferenceWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceWith) -- [DeleteAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DeleteAt) -- [Drop](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Drop) -- [Every](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Every) -- [Filter](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Filter) -- [Find](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Find) -- [FindLast](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FindLast) -- [Flatten](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Flatten) -- [FlattenDeep](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FlattenDeep) -- [ForEach](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ForEach) -- [GroupBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupBy) -- [GroupWith](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupWith) -- [IntSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IntSlice) -- [InterfaceSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InterfaceSlice) -- [Intersection](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Intersection) -- [InsertAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InsertAt) -- [IndexOf](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IndexOf) -- [LastIndexOf](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#LastIndexOf) -- [Map](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Map) -- [Merge](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Merge) -- [Reverse](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reverse) -- [Reduce](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reduce) -- [Replace](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Replace) -- [ReplaceAll](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ReplaceAll) -- [Repeat](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Repeat) -- [Shuffle](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Shuffle) -- [Sort](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Sort) -- [SortBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortBy) -- [SortByFielddeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortByField) -- [Some](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Some) -- [StringSlicedeprecated](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#StringSlice) -- [SymmetricDifference](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SymmetricDifference) -- [ToSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ToSlice) -- [ToSlicePointer](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ToSlicePointer) -- [Unique](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Unique) -- [UniqueBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UniqueBy) -- [Union](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Union) -- [UniqueBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UniqueBy) -- [UpdateAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UpdateAt) -- [Without](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Without) -- [KeyBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#KeyBy) +- **AppendIfAbsent** : 当前切片中不包含值时,将该值追加到切片中。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#AppendIfAbsent)] + [[play](https://go.dev/play/p/GNdv7Jg2Taj)] +- **Contain** : 判断slice是否包含value。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Contain)] + [[play](https://go.dev/play/p/_454yEHcNjf)] +- **ContainSubSlice** : 判断slice是否包含subslice。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ContainSubSlice)] + [[play](https://go.dev/play/p/bcuQ3UT6Sev)] +- **Chunk** : 按照size参数均分slice。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Chunk)] + [[play](https://go.dev/play/p/b4Pou5j2L_C)] +- **Compact** : 去除slice中的假值(false values are false, nil, 0, "")。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Compact)] + [[play](https://go.dev/play/p/pO5AnxEr3TK)] +- **Concat** : 合并多个slices到一个slice中。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Concat)] + [[play](https://go.dev/play/p/gPt-q7zr5mk)] +- **Count** : 返回切片中指定元素的个数。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Count)] + [[play](https://go.dev/play/p/Mj4oiEnQvRJ)] +- **CountBy** : 遍历切片,对每个元素执行函数predicate. 返回符合函数返回值为true的元素的个数。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#CountBy)] + [[play](https://go.dev/play/p/tHOccTMDZCC)] +- **Difference** : 创建一个切片,其元素不包含在另一个给定切片中。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Difference)] + [[play](https://go.dev/play/p/VXvadzLzhDa)] +- **DifferenceBy** : 将两个slice中的每个元素调用iteratee函数,并比较它们的返回值,如果不相等返回在slice中对应的值。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DifferenceBy)] + [[play](https://go.dev/play/p/DiivgwM5OnC)] +- **DifferenceWith** : 接受比较器函数,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DifferenceWith)] + [[play](https://go.dev/play/p/v2U2deugKuV)] +- **DeleteAt** : 删除切片中指定开始索引到结束索引的元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DeleteAt)] + [[play](https://go.dev/play/p/pJ-d6MUWcvK)] +- **Drop** : 创建一个切片,当n > 0时从开头删除n个元素,或者当n < 0时从结尾删除n个元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Drop)] + [[play](https://go.dev/play/p/pJ-d6MUWcvK)] +- **Equal** : 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Equal)] + [[play](https://go.dev/play/p/WcRQJ37ifPa)] +- **EqualWith** : 检查两个切片是否相等,相等条件:对两个切片的元素调用比较函数comparator,返回true。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#EqualWith)] + [[play](https://go.dev/play/p/b9iygtgsHI1)] +- **Every** : 如果切片中的所有值都通过谓词函数,则返回true。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Every)] + [[play](https://go.dev/play/p/R8U6Sl-j8cD)] +- **Filter** : 返回切片中通过predicate函数真值测试的所有元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Filter)] + [[play](https://go.dev/play/p/SdPna-7qK4T)] +- **Find** : 遍历切片的元素,返回第一个通过predicate函数真值测试的元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Find)] + [[play](https://go.dev/play/p/CBKeBoHVLgq)] +- **FindLast** : 从头到尾遍历slice的元素,返回最后一个通过predicate函数真值测试的元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FindLast)] + [[play](https://go.dev/play/p/FFDPV_j7URd)] +- **Flatten** : 将多维切片展平一层。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Flatten)] + [[play](https://go.dev/play/p/hYa3cBEevtm)] +- **FlattenDeep** : 将多维切片递归展平到一层。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#FlattenDeep)] + [[play](https://go.dev/play/p/yjYNHPyCFaF)] +- **ForEach** : 遍历切片的元素并为每个元素调用iteratee函数。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ForEach)] + [[play](https://go.dev/play/p/DrPaa4YsHRF)] +- **GroupBy** : 迭代切片的元素,每个元素将按条件分组,返回两个切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupBy)] + [[play](https://go.dev/play/p/QVkPxzPR0iA)] +- **GroupWith** : 创建一个map,key是iteratee遍历slice中的每个元素返回的结果。值是切片元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#GroupWith)] + [[play](https://go.dev/play/p/ApCvMNTLO8a)] +- **IntSlicedeprecated** : 将接口切片转换为int切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IntSlice)] + [[play](https://go.dev/play/p/FdQXF0Vvqs-)] +- **InterfaceSlicedeprecated** : 将值转换为interface切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InterfaceSlice)] + [[play](https://go.dev/play/p/FdQXF0Vvqs-)] +- **Intersection** : 返回多个切片的交集。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Intersection)] + [[play](https://go.dev/play/p/anJXfB5wq_t)] +- **InsertAt** : 将元素插入到索引处的切片中。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InsertAt)] + [[play](https://go.dev/play/p/hMLNxPEGJVE)] +- **IndexOf** : 返回在切片中找到值的第一个匹配项的索引,如果找不到值,则返回-1。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IndexOf)] + [[play](https://go.dev/play/p/MRN1f0FpABb)] +- **LastIndexOf** : 返回在切片中找到最后一个值的索引,如果找不到该值,则返回-1。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#LastIndexOf)] + [[play](https://go.dev/play/p/DokM4cf1IKH)] +- **Map** : 对slice中的每个元素执行map函数以创建一个新切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Map)] + [[play](https://go.dev/play/p/biaTefqPquw)] +- **Merge** : 合并多个切片(不会消除重复元素)。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Merge)] + [[play](https://go.dev/play/p/lbjFp784r9N)] +- **Reverse** : 反转切片中的元素顺序。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reverse)] + [[play](https://go.dev/play/p/8uI8f1lwNrQ)] +- **Reduce** : 将切片中的元素依次运行iteratee函数,返回运行结果。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reduce)] + [[play](https://go.dev/play/p/_RfXJJWIsIm)] +- **Replace** : 返回切片的副本,其中前n个不重叠的old替换为new。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Replace)] + [[play](https://go.dev/play/p/P5mZp7IhOFo)] +- **ReplaceAll** : 返回切片的副本,将其中old全部替换为new。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ReplaceAll)] + [[play](https://go.dev/play/p/CzqXMsuYUrx)] +- **Repeat** : 创建一个切片,包含n个传入的item。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Repeat)] + [[play](https://go.dev/play/p/1CbOmtgILUU)] +- **Shuffle** : 随机打乱切片中的元素顺序。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Shuffle)] + [[play](https://go.dev/play/p/YHvhnWGU3Ge)] +- **Sort** : 对任何有序类型(数字或字符串)的切片进行排序,使用快速排序算法。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Sort)] + [[play](https://go.dev/play/p/V9AVjzf_4Fk)] +- **SortBy** : 按照less函数确定的升序规则对切片进行排序。排序不保证稳定性。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortBy)] + [[play](https://go.dev/play/p/DAhLQSZEumm)] +- **SortByFielddeprecated** : 按字段对结构切片进行排序。slice元素应为struct,字段类型应为int、uint、string或bool。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortByField)] + [[play](https://go.dev/play/p/fU1prOBP9p1)] +- **Some** : 如果列表中的任何值通过谓词函数,则返回true。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Some)] + [[play](https://go.dev/play/p/4pO9Xf9NDGS)] +- **StringSlicedeprecated** : 将接口切片转换为字符串切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#StringSlice)] + [[play](https://go.dev/play/p/W0TZDWCPFcI)] +- **SymmetricDifference** : 返回一个切片,其中的元素存在于参数切片中,但不同时存储在于参数切片中(交集取反)。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#h42nJX5xMln)] + [[play](https://go.dev/play/p/1CbOmtgILUU)] +- **ToSlice** : 将可变参数转为切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ToSlice)] + [[play](https://go.dev/play/p/YzbzVq5kscN)] +- **ToSlicePointer** : 将可变参数转为指针切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ToSlicePointer)] + [[play](https://go.dev/play/p/gx4tr6_VXSF)] +- **Unique** : 删除切片中的重复元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Unique)] + [[play](https://go.dev/play/p/AXw0R3ZTE6a)] +- **UniqueBy** : 对切片的每个元素调用iteratee函数,然后删除重复元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UniqueBy)] + [[play](https://go.dev/play/p/UR323iZLDpv)] +- **Union** : 合并多个切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Union)] + [[play](https://go.dev/play/p/hfXV1iRIZOf)] +- **UnionBy** : 对切片的每个元素调用函数后,合并多个切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UnionBy)] + [[play](https://go.dev/play/p/HGKHfxKQsFi)] +- **UpdateAt** : 更新索引处的切片元素。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UpdateAt)] + [[play](https://go.dev/play/p/f3mh2KloWVm)] +- **Without** : 创建一个不包括所有给定值的切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Without)] + [[play](https://go.dev/play/p/bwhEXEypThg)] +- **KeyBy** :将切片每个元素调用函数后转为map。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#KeyBy)] + [[play](https://go.dev/play/p/uXod2LWD1Kg)] + ### 17. strutil 包含字符串处理的相关函数。 diff --git a/docs/slice_zh-CN.md b/docs/slice_zh-CN.md index ca4dec5..b9ab2f1 100644 --- a/docs/slice_zh-CN.md +++ b/docs/slice_zh-CN.md @@ -319,7 +319,7 @@ func main() { ### DifferenceBy -

在slice和comparedSlice中的每个元素调用iteratee函数,并比较它们的返回值,如果不想等返回在slice中对应的值

+

将两个slice中的每个元素调用iteratee函数,并比较它们的返回值,如果不相等返回在slice中对应的值

函数签名: @@ -349,7 +349,7 @@ func main() { ### DifferenceWith -

DifferenceWith 接受比较器,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定

+

接受比较器函数,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定

函数签名: @@ -379,7 +379,7 @@ func main() { ### DeleteAt -

删除切片中从开始索引到结束索引-1的元素

+

删除切片中指定开始索引到结束索引的元素

函数签名: @@ -407,7 +407,7 @@ func main() { ### Drop -

创建一个切片,当 n > 0 时从开头删除 n 个元素,或者当 n < 0 时从结尾删除 n 个元素

+

创建一个切片,当n > 0时从开头删除n个元素,或者当n < 0时从结尾删除n个元素

函数签名: diff --git a/slice/slice.go b/slice/slice.go index 24eaab9..f5a98b8 100644 --- a/slice/slice.go +++ b/slice/slice.go @@ -85,7 +85,7 @@ func Compact[T comparable](slice []T) []T { } // Concat creates a new slice concatenating slice with any additional slices. -// Play: +// Play: https://go.dev/play/p/gPt-q7zr5mk func Concat[T any](slice []T, slices ...[]T) []T { result := append([]T{}, slice...) @@ -771,7 +771,7 @@ func Reverse[T any](slice []T) { } } -// Shuffle creates an slice of shuffled values. +// Shuffle the slice. // Play: https://go.dev/play/p/YHvhnWGU3Ge func Shuffle[T any](slice []T) []T { rand.Seed(time.Now().UnixNano())