feat: reduce

This commit is contained in:
Ruidy 2021-12-28 19:47:05 -04:00
parent ad518df993
commit fa9989c181
2 changed files with 27 additions and 0 deletions

8
reduce.go Normal file
View file

@ -0,0 +1,8 @@
package underscore
func Reduce[T, P any](values []T, predicate func(T, P) P, acc P) P {
for _, v := range values {
acc = predicate(v, acc)
}
return acc
}

19
reduce_test.go Normal file
View file

@ -0,0 +1,19 @@
package underscore_test
import (
"testing"
"github.com/stretchr/testify/assert"
u "github.com/rjNemo/underscore"
)
func TestReduce(t *testing.T) {
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
reducer := func(n, acc int) int {
return n + acc
}
want := 45
assert.Equal(t, want, u.Reduce(nums, reducer, 0))
}