https://github.com/dev-parvej/js_array_method
Map filter reduce in golang
https://github.com/dev-parvej/js_array_method
every filter find findindex golang helper-functions helpers map reduce slice some
Last synced: about 1 month ago
JSON representation
Map filter reduce in golang
- Host: GitHub
- URL: https://github.com/dev-parvej/js_array_method
- Owner: dev-parvej
- License: mit
- Created: 2022-10-15T15:32:40.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-26T07:47:17.000Z (7 months ago)
- Last Synced: 2025-09-02T11:42:12.127Z (6 months ago)
- Topics: every, filter, find, findindex, golang, helper-functions, helpers, map, reduce, slice, some
- Language: Go
- Homepage:
- Size: 24.4 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# go-js-array-methods
This package is to implement javacript array methods which is missing in golang
## Installation
```
go get github.com/dev-parvej/js_array_method
```
## Usage
```
import js "github.com/dev-parvej/js_array_method"
type User struct {
Id int
Name string
}
type Foo struct {
Bar string
}
users := []User{{Id: 10, Name: "Go"}, {Id: 11, Name: "Lang"}}
```
### Find
```
user, err := js.Find(users, func(user User, index int) bool {
return user.Id == 10
})
// {Id: 10, Name: "Go"}
```
### Filter
```
filteredUsers := js.Filter(users, func(user User, index int) bool {
return user.Id == 10
})
// {{Id: 10, Name: "Go"}}
```
### Map
```
js.Map(users, func(user User, index int) Foo {
return Foo{
Bar: fmt.Sprintf("%d %s", user.Id, user.Name),
}
})
// {{Bar: "10 Go"}, {Bar: "11 Lang"}}
```
### Reduce
```
numbers := []int{10, 11, 12, 13}
js.Reduce(numbers, func(s int, n int, i int) int {
return s + n
}, 0)
// 46
```
### Every
```
users := []User{{Id: 12, Name: "Go"}, {Id: 14, Name: "Go"}}
resultTrue := Every(users, func(user User, _ int) bool {
return user.Name == "Go"
})
// true
Every([]string{"hey", "hi"}, "hi")
// false
```
### Foreach
```
var slices = []string{"Go", "Typescript", "Nodejs"}
Foreach(slices, func(ln string, index int) {
// ln contains the item of the slice
// index contains item index
})
```
### Includes
```
languages := []User{{Id: 12, Name: "Go"}, {Id: 14, Name: "Lang"}, {Id: 15, Name: "Typescript"}}
Includes(languages, func(ln User, _ int) bool { return ln.Name == "Go" })
//true
Includes(languages, func(ln User, _ int) bool { return ln.Name == "MySql" })
//false
languages := []string{"go", "PHP", "MySql", "TypeScript"}
Includes(languages, "TypeScript").
//true
```
### Includes
```
users := []User{{Id: 10, Name: "John"}, {Id: 11, Name: "Doe"}, {Id: 12, Name: "Sabrina"}}
Reverse(users)
// {{Id: 12, Name: "Sabrina"}, {Id: 11, Name: "Doe"}, {Id: 10, Name: "John"}}
```
### FindIndex
```
users := []User{{Id: 10, Name: "John"}, {Id: 11, Name: "Doe"}, {Id: 12, Name: "Sabrina"}}
FindIndex(users, func(user User, _ int) bool {
return user.Name == "Doe"
})
// 2
users := []string{"User1", "User2", "User3", "User4"}
FindIndex(users, "User1")
//0
FindIndex(users, "User5")
//-1
```
If you find it usefull make sure you star the repo
[Buy me a coffe](https://www.buymeacoffee.com/parvejcode)