add difference function

This commit is contained in:
Ruidy 2022-03-24 12:23:04 -04:00
parent 227a1d5479
commit 89da3c715a
3 changed files with 26 additions and 1 deletions

View file

@ -4,7 +4,7 @@
![Go version](https://img.shields.io/github/go-mod/go-version/rjNemo/underscore?style=for-the-badge)
![test coverage](https://img.shields.io/codecov/c/github/rjNemo/underscore?style=for-the-badge)
![underscore](https://socialify.git.ci/rjNemo/underscore/image?description=1&descriptionEditable=Useful%20functional%20programming%20helpers%20for%20Go%201.18%20and%20beyond&font=Raleway&language=1&logo=https%3A%2F%2Fgithub.com%2FrjNemo%2Funderscore%2Fblob%2Fmain%2Fdocs%2Fstatic%2Flogo.png&owner=1&pattern=Floating%20Cogs&stargazers=1&theme=Light)
![underscore](https://socialify.git.ci/rjNemo/underscore/image?description=1&descriptionEditable=Useful%20functional%20programming%20helpers%20for%20Go%201.18%20and%20beyond&font=Raleway&language=1&logo=https%3A%2F%2Fraw.githubusercontent.com%2FrjNemo%2Funderscore%2Fmain%2Fdocs%2Fstatic%2Flogo.png&owner=1&pattern=Floating%20Cogs&stargazers=1&theme=Light)
`underscore` is a `Go` library providing useful functional programming helpers without extending any built-in objects.

8
difference.go Normal file
View file

@ -0,0 +1,8 @@
package underscore
// Difference Returns a copy of the array with all instances of the values that are not present in the other array.
func Difference[T comparable](slice, other []T) []T {
return Filter(slice, func(n T) bool {
return !Contains(other, n)
})
}

17
difference_test.go Normal file
View file

@ -0,0 +1,17 @@
package underscore_test
import (
"testing"
"github.com/stretchr/testify/assert"
u "github.com/rjNemo/underscore"
)
func TestDifference(t *testing.T) {
a := []int{1, 3, 5, 6, 7, 9}
b := []int{9, 7, 5, 4}
want := []int{1, 3, 6}
assert.Equal(t, want, u.Difference(a, b))
}