mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-16 02:32:28 +08:00
fix: fix chunk slice bug
This commit is contained in:
@@ -42,29 +42,18 @@ func Chunk[T any](slice []T, size int) [][]T {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
length := len(slice)
|
for _, item := range slice {
|
||||||
if size == 1 || size >= length {
|
l := len(result)
|
||||||
for _, v := range slice {
|
if l == 0 || len(result[l-1]) == size {
|
||||||
var tmp []T
|
result = append(result, []T{})
|
||||||
tmp = append(tmp, v)
|
l++
|
||||||
result = append(result, tmp)
|
|
||||||
}
|
}
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
// divide slice equally
|
result[l-1] = append(result[l-1], item)
|
||||||
divideNum := length/size + 1
|
|
||||||
for i := 0; i < divideNum; i++ {
|
|
||||||
if i == divideNum-1 {
|
|
||||||
if len(slice[i*size:]) > 0 {
|
|
||||||
result = append(result, slice[i*size:])
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
result = append(result, slice[i*size:(i+1)*size])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compact creates an slice with all falsey values removed. The values false, nil, 0, and "" are falsey
|
// Compact creates an slice with all falsey values removed. The values false, nil, 0, and "" are falsey
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ func TestChunk(t *testing.T) {
|
|||||||
|
|
||||||
arr := []string{"a", "b", "c", "d", "e"}
|
arr := []string{"a", "b", "c", "d", "e"}
|
||||||
|
|
||||||
|
assert.Equal([][]string{}, Chunk(arr, -1))
|
||||||
|
|
||||||
|
assert.Equal([][]string{}, Chunk(arr, 0))
|
||||||
|
|
||||||
r1 := [][]string{{"a"}, {"b"}, {"c"}, {"d"}, {"e"}}
|
r1 := [][]string{{"a"}, {"b"}, {"c"}, {"d"}, {"e"}}
|
||||||
assert.Equal(r1, Chunk(arr, 1))
|
assert.Equal(r1, Chunk(arr, 1))
|
||||||
|
|
||||||
@@ -43,8 +47,11 @@ func TestChunk(t *testing.T) {
|
|||||||
r4 := [][]string{{"a", "b", "c", "d"}, {"e"}}
|
r4 := [][]string{{"a", "b", "c", "d"}, {"e"}}
|
||||||
assert.Equal(r4, Chunk(arr, 4))
|
assert.Equal(r4, Chunk(arr, 4))
|
||||||
|
|
||||||
r5 := [][]string{{"a"}, {"b"}, {"c"}, {"d"}, {"e"}}
|
r5 := [][]string{{"a", "b", "c", "d", "e"}}
|
||||||
assert.Equal(r5, Chunk(arr, 5))
|
assert.Equal(r5, Chunk(arr, 5))
|
||||||
|
|
||||||
|
r6 := [][]string{{"a", "b", "c", "d", "e"}}
|
||||||
|
assert.Equal(r6, Chunk(arr, 6))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCompact(t *testing.T) {
|
func TestCompact(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user