diff --git a/CHANGELOG.md b/CHANGELOG.md
index 407d907..ddec9c3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,15 @@
# go-utils
+
+## [v1.42.1] - 2025-10-23
+### Fixes
+- remove side effect from map random ordering on FindDifferencesFromSlices
+
+
## [v1.42.0] - 2025-10-22
### New Features
-- identifier tanya
+- identifier tanya ([#72](https://github.com/kumparan/go-utils/issues/72))
@@ -213,9 +219,6 @@
- fix marshal issue on gorm.DeletedAt empty value ([#32](https://github.com/kumparan/go-utils/issues/32))
-
-## [v.1.20.0] - 2022-03-11
-
## [v1.20.0] - 2022-03-11
### New Features
@@ -315,11 +318,11 @@
- add money formatter for multiple currencies ([#13](https://github.com/kumparan/go-utils/issues/13))
-
-## [v1.7.1] - 2020-12-10
-
## [v1.8.0] - 2020-12-10
+
+
+## [v1.7.1] - 2020-12-10
### New Features
- add formatter for indonesian money and date
@@ -384,7 +387,8 @@
- init go-utils
-[Unreleased]: https://github.com/kumparan/go-utils/compare/v1.42.0...HEAD
+[Unreleased]: https://github.com/kumparan/go-utils/compare/v1.42.1...HEAD
+[v1.42.1]: https://github.com/kumparan/go-utils/compare/v1.42.0...v1.42.1
[v1.42.0]: https://github.com/kumparan/go-utils/compare/v1.41.0...v1.42.0
[v1.41.0]: https://github.com/kumparan/go-utils/compare/v1.40.2...v1.41.0
[v1.40.2]: https://github.com/kumparan/go-utils/compare/v1.40.1...v1.40.2
@@ -418,8 +422,7 @@
[v1.23.0]: https://github.com/kumparan/go-utils/compare/v1.22.0...v1.23.0
[v1.22.0]: https://github.com/kumparan/go-utils/compare/v1.21.0...v1.22.0
[v1.21.0]: https://github.com/kumparan/go-utils/compare/v1.20.1...v1.21.0
-[v1.20.1]: https://github.com/kumparan/go-utils/compare/v.1.20.0...v1.20.1
-[v.1.20.0]: https://github.com/kumparan/go-utils/compare/v1.20.0...v.1.20.0
+[v1.20.1]: https://github.com/kumparan/go-utils/compare/v1.20.0...v1.20.1
[v1.20.0]: https://github.com/kumparan/go-utils/compare/v1.19.3...v1.20.0
[v1.19.3]: https://github.com/kumparan/go-utils/compare/v1.19.2...v1.19.3
[v1.19.2]: https://github.com/kumparan/go-utils/compare/v1.19.1...v1.19.2
@@ -436,9 +439,9 @@
[v1.12.0]: https://github.com/kumparan/go-utils/compare/v1.11.0...v1.12.0
[v1.11.0]: https://github.com/kumparan/go-utils/compare/v1.10.0...v1.11.0
[v1.10.0]: https://github.com/kumparan/go-utils/compare/v1.9.0...v1.10.0
-[v1.9.0]: https://github.com/kumparan/go-utils/compare/v1.7.1...v1.9.0
-[v1.7.1]: https://github.com/kumparan/go-utils/compare/v1.8.0...v1.7.1
-[v1.8.0]: https://github.com/kumparan/go-utils/compare/v1.7.0...v1.8.0
+[v1.9.0]: https://github.com/kumparan/go-utils/compare/v1.8.0...v1.9.0
+[v1.8.0]: https://github.com/kumparan/go-utils/compare/v1.7.1...v1.8.0
+[v1.7.1]: https://github.com/kumparan/go-utils/compare/v1.7.0...v1.7.1
[v1.7.0]: https://github.com/kumparan/go-utils/compare/v1.6.0...v1.7.0
[v1.6.0]: https://github.com/kumparan/go-utils/compare/v1.5.0...v1.6.0
[v1.5.0]: https://github.com/kumparan/go-utils/compare/v1.4.0...v1.5.0
diff --git a/slice.go b/slice.go
index b44e9c4..2265f36 100644
--- a/slice.go
+++ b/slice.go
@@ -165,6 +165,7 @@ func FindDifferencesFromSlices[T comparable](slices ...[]T) []T {
return nil
}
+ var allItems []T
itemCountMap := map[T]int{}
for _, slice := range slices {
handledItem := map[T]bool{}
@@ -172,11 +173,15 @@ func FindDifferencesFromSlices[T comparable](slices ...[]T) []T {
// handle duplicate item in one slice
if !handledItem[item] {
itemCountMap[item]++
+ allItems = append(allItems, item)
+ handledItem[item] = true
}
}
}
+ allItems = Unique(allItems)
var result []T
- for item, count := range itemCountMap {
+ for _, item := range allItems {
+ count := itemCountMap[item]
if count < len(slices) {
result = append(result, item)
}
diff --git a/slice_test.go b/slice_test.go
index 7a1ed15..83f9cd5 100644
--- a/slice_test.go
+++ b/slice_test.go
@@ -134,6 +134,14 @@ func Test_FindDifferencesFromSlices(t *testing.T) {
},
result: nil,
},
+ {
+ slices: [][]string{
+ {"b", "a", "c"},
+ {"a", "c", "d"},
+ {"e", "f", "a", "b"},
+ },
+ result: []string{"b", "d", "e", "f"},
+ },
}
for _, tc := range testCases {