add pskl.utils.Array.chunk
This commit is contained in:
parent
156161f7c8
commit
dba62d2b0d
2 changed files with 86 additions and 0 deletions
|
@ -10,6 +10,24 @@
|
||||||
match = filtered[0];
|
match = filtered[0];
|
||||||
}
|
}
|
||||||
return match;
|
return match;
|
||||||
|
},
|
||||||
|
|
||||||
|
chunk : function (array, chunks) {
|
||||||
|
var chunked = [];
|
||||||
|
|
||||||
|
// We cannot have more chunks than array items.
|
||||||
|
chunks = Math.min(chunks, array.length);
|
||||||
|
|
||||||
|
// chunks should be at least 1
|
||||||
|
chunks = Math.max(1, chunks);
|
||||||
|
|
||||||
|
var step = Math.round(array.length / chunks);
|
||||||
|
for (var i = 0 ; i < chunks ; i++) {
|
||||||
|
var isLast = i == chunks - 1;
|
||||||
|
var end = isLast ? array.length : (i + 1) * step;
|
||||||
|
chunked.push(array.slice(i * step, end));
|
||||||
|
}
|
||||||
|
return chunked;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
68
test/js/utils/ArrayTest.js
Normal file
68
test/js/utils/ArrayTest.js
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
describe("Array utils", function() {
|
||||||
|
|
||||||
|
beforeEach(function() {});
|
||||||
|
afterEach(function() {});
|
||||||
|
|
||||||
|
it("chunks correctly", function() {
|
||||||
|
// when
|
||||||
|
var array = [1, 2, 3, 4];
|
||||||
|
|
||||||
|
// then
|
||||||
|
var chunks = pskl.utils.Array.chunk(array, 1);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(1);
|
||||||
|
expect(chunks[0]).toEqual([1, 2, 3, 4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, 2);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(2);
|
||||||
|
expect(chunks[0]).toEqual([1, 2]);
|
||||||
|
expect(chunks[1]).toEqual([3, 4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, 3);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(3);
|
||||||
|
expect(chunks[0]).toEqual([1]);
|
||||||
|
expect(chunks[1]).toEqual([2]);
|
||||||
|
expect(chunks[2]).toEqual([3, 4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, 4);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(4);
|
||||||
|
expect(chunks[0]).toEqual([1]);
|
||||||
|
expect(chunks[1]).toEqual([2]);
|
||||||
|
expect(chunks[2]).toEqual([3]);
|
||||||
|
expect(chunks[3]).toEqual([4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, 5);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(4);
|
||||||
|
expect(chunks[0]).toEqual([1]);
|
||||||
|
expect(chunks[1]).toEqual([2]);
|
||||||
|
expect(chunks[2]).toEqual([3]);
|
||||||
|
expect(chunks[3]).toEqual([4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, 0);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(1);
|
||||||
|
expect(chunks[0]).toEqual([1, 2, 3, 4]);
|
||||||
|
|
||||||
|
// then
|
||||||
|
chunks = pskl.utils.Array.chunk(array, -1);
|
||||||
|
|
||||||
|
// verify
|
||||||
|
expect(chunks.length).toBe(1);
|
||||||
|
expect(chunks[0]).toEqual([1, 2, 3, 4]);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue