🍕 trancio
Trancio lazily splits an array into chunks, providing both a functional and an iterable interface
$ npm install trancio
Or if you prefer using Yarn:
$ yarn add trancio
import { trancio } from "trancio"
const array = [1, 2, 3, 4, 5, 6, 7, 8]
const tranci = [...trancio(array, 3)]
// => Array [[1, 2, 3], [4, 5, 6], [7, 8]]
const trancia = trancio(array, 3)
trancia()
// => [1, 2, 3]
trancia()
// => [4, 5, 6]
trancia()
// => [7, 8]
If you're using TypeScript, you can also directly import the .ts
file, just like this:
import { trancio } from "trancio/ts"
By doing that your bundler should, hopefully, be able to compile it by following your project's tsconfig.json
file.
Create a slicer that also implements the IterableIterator
interface, that way you can use the spread operator, the for...of
statement, and call next()
over it.
Calling the slicer will return a chunk of the array with size
elements. If input
can't be split evenly, the final chunk will contain the remaining elements.
Type: unknown[]
Type: number
The length of each chunk.
Using next()
:
import { trancio } from "trancio"
const array = [1, 2, 3, 4, 5, 6, 7, 8]
const trancia = trancio(array, 3)
const fetta = trancia.next()
// fetta => { value: [1, 2, 3], done: false }
trancia.next()
// fetta => { value: [4, 5, 6], done: false }
trancia.next()
// fetta => { value: [7, 8], done: false }
trancia.next()
// fetta => { value: undefined, done: true }
Using for...of
:
import { trancio } from "trancio"
const array = [1, 2, 3, 4, 5, 6, 7, 8]
for (const fetta of trancio(array, 3)) {
console.log(fetta)
// 1st time => [1, 2, 3]
// 2nd time => [4, 5, 6]
// 3rd time => [7, 8]
}
Pronounced /ˈtrantʃo/
, trancio is an Italian word that means "slice" or "piece". Usually, the term is used for food, e.g. "un trancio di pizza", which means "a slice of pizza", hence the pizza emoji at the top.