Files
portainer--portainer/api/slicesx/partition.go
T
2026-07-13 12:08:39 +08:00

20 lines
514 B
Go

package slicesx
// Split elements in two slices.
// The first contains elements predicate returns truthy for
// The second contains elements predicate returns falsey for
// The predicate is invoked with one argument: (value).
func Partition[T any](input []T, predicate func(T) bool) ([]T, []T) {
truthy := make([]T, 0)
falsey := make([]T, 0)
for i := range input {
if predicate(input[i]) {
truthy = append(truthy, input[i])
} else {
falsey = append(falsey, input[i])
}
}
return truthy, falsey
}