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}
|
||||
```
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// 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.
|
||||
func Entries[K comparable, V any](in map[K]V) []Entry[K, V] {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
@@ -26,6 +26,15 @@ func TestValues(t *testing.T) {
|
||||
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) {
|
||||
is := assert.New(t)
|
||||
|
||||
|
Reference in New Issue
Block a user