mirror of
https://github.com/samber/lo.git
synced 2025-09-26 20:11:13 +08:00
Added ValuesF helper
This commit is contained in:
@@ -540,6 +540,15 @@ values := lo.Values[string, int](map[string]int{"foo": 1, "bar": 2})
|
|||||||
// []int{1, 2}
|
// []int{1, 2}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ValuesF
|
||||||
|
|
||||||
|
same as Values, but additionally filters map elements by provided keys.
|
||||||
|
|
||||||
|
```go
|
||||||
|
valuesF := ValuesF[string, int](map[string]int{"foo": 1, "bar": 2, "baz": 3}, []string{"foo", "baz"})
|
||||||
|
// []int{1, 3}
|
||||||
|
```
|
||||||
|
|
||||||
### Entries
|
### Entries
|
||||||
|
|
||||||
Transforms a map into array of key/value pairs.
|
Transforms a map into array of key/value pairs.
|
||||||
|
13
map.go
13
map.go
@@ -22,6 +22,17 @@ func Values[K comparable, V any](in map[K]V) []V {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValuesF same as Values, but additionally filters map elements by provided keys.
|
||||||
|
func ValuesF[K comparable, V any](in map[K]V, keys []K) []V {
|
||||||
|
r := make([]V, 0, len(in))
|
||||||
|
for k, v := range in {
|
||||||
|
if Contains(keys, k) {
|
||||||
|
r = append(r, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
// Entries transforms a map into array of key/value pairs.
|
// Entries transforms a map into array of key/value pairs.
|
||||||
func Entries[K comparable, V any](in map[K]V) []Entry[K, V] {
|
func Entries[K comparable, V any](in map[K]V) []Entry[K, V] {
|
||||||
entries := make([]Entry[K, V], 0, len(in))
|
entries := make([]Entry[K, V], 0, len(in))
|
||||||
@@ -69,4 +80,4 @@ func MapValues[K comparable, V any, R any](in map[K]V, iteratee func(V, K) R) ma
|
|||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,15 @@ func TestValues(t *testing.T) {
|
|||||||
is.Equal(r1, []int{1, 2})
|
is.Equal(r1, []int{1, 2})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestValuesF(t *testing.T) {
|
||||||
|
is := assert.New(t)
|
||||||
|
|
||||||
|
r1 := ValuesF[string, int](map[string]int{"foo": 1, "bar": 2, "baz": 3}, []string{"foo", "baz"})
|
||||||
|
sort.Ints(r1)
|
||||||
|
|
||||||
|
is.Equal(r1, []int{1, 3})
|
||||||
|
}
|
||||||
|
|
||||||
func TestEntries(t *testing.T) {
|
func TestEntries(t *testing.T) {
|
||||||
is := assert.New(t)
|
is := assert.New(t)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user