Skip to content

Commit 030d48d

Browse files
committed
feat:map filter remove
1 parent 9b43f0e commit 030d48d

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

maps/filter.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package maps
2+
3+
func Filter[Key comparable, Val comparable](data map[Key]Val, filters ...Val) {
4+
for _, filter := range filters {
5+
if len(data) == 0 {
6+
return
7+
}
8+
for key := range data {
9+
if data[key] == filter {
10+
delete(data, key)
11+
}
12+
}
13+
}
14+
}

maps/filter_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package maps
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
func ExampleFilter() {
9+
first := time.Unix(1709531226, 0)
10+
second := first.Add(time.Hour)
11+
data := map[string]time.Time{
12+
"one": first,
13+
"tow": first,
14+
"later": second,
15+
}
16+
eqfirst := time.Unix(1709531226, 0)
17+
Filter(data, eqfirst)
18+
fmt.Println(data)
19+
//Output:
20+
//map[later:2024-03-04 14:47:06 +0800 CST]
21+
}

maps/remoe_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package maps
2+
3+
import "fmt"
4+
5+
func ExampleRemove() {
6+
data := map[string]any{
7+
"one": 1,
8+
"two": 2,
9+
"three": 3,
10+
}
11+
Remove(data, "three", "one")
12+
fmt.Println(data)
13+
//Output
14+
//map[one:1]
15+
}

maps/remove.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package maps
2+
3+
func Remove[Key comparable](data map[Key]any, keys ...Key) {
4+
for _, k := range keys {
5+
delete(data, k)
6+
}
7+
}

0 commit comments

Comments
 (0)