@shelf/array-chunk-by-size

3.1.0 • Public • Published

array-chunk-by-size CircleCI

Chunk array of objects by their size in JSON

Install

$ yarn add @shelf/array-chunk-by-size

Usage

Useful if you want to split large array into smaller, but limited by JSON size.

Each array chunk will be up to specified amount of bytes when stringified into JSON.

import {chunkArray} from '@shelf/array-chunk-by-size';

const bigArray = [{a: 1}, {b: 2}, {c: 3}];
const twoKilobytes = 2 * 1024;

const smallerArrays = chunkArray({input: bigArray, bytesSize: twoKilobytes});
// => [ [ ... ], [ ... ] ] and so on

Alternatively, you might pass a custom size calculation function. For example, to chunk array by LLM tokens size:

import {chunkArray} from '@shelf/array-chunk-by-size';
import {encode} from 'gpt-3-encoder';

const bigArray = ['msg-1', 'msg-2'];
const gpt3MaxTokens = 4000;

const smallerArrays = chunkArray({
  input: bigArray,
  bytesSize: gpt3MaxTokens,
  sizeCalcFunction: item => encode(item).length,
});

See Also

Publish

$ git checkout master
$ yarn version
$ yarn publish
$ git push origin master --tags

License

MIT © Shelf

/@shelf/array-chunk-by-size/

    Package Sidebar

    Install

    npm i @shelf/array-chunk-by-size

    Weekly Downloads

    4,723

    Version

    3.1.0

    License

    MIT

    Unpacked Size

    7.59 kB

    Total Files

    11

    Last publish

    Collaborators

    • ksenia_holovko
    • petro.bodnarchuk
    • kateryna-kochina
    • maksym.tarnavskyi
    • andrii-nastenko
    • mykhailo.yatsko
    • ahavrysh
    • nikita_shelf
    • maciej.orlowski
    • monopotan
    • andrew214
    • bogdan.kolesnyk
    • andrii.batutin
    • kristina.zhak
    • anton-russo
    • mmazurowski
    • toms-shelf
    • mateuszgajdashelf
    • kchlon
    • dmytro.harazdovskiy
    • duch0416
    • i5adovyi
    • olesiamuller
    • mykola.khytra
    • yuliiakovalchuk
    • el_scrambone
    • bodyaflesh
    • slavammellnikov
    • andriisermiahin
    • mpushkin
    • batovpavlo
    • domovoj
    • vozemer
    • oleksii.dymnich
    • dima-bond
    • maksym.hayovets
    • oles.zadorozhnyy
    • ss1l
    • gemshelf
    • hartzler
    • vladgolubev
    • hmelenok
    • knupman
    • maaraanas
    • terret
    • chapelskyi.slavik
    • pihorb
    • irynah
    • diana.kryskuv
    • andy.raven
    • rafler
    • sskalp88
    • demiansua
    • yuriil
    • ktv18
    • drews_abuse
    • rostyslav-horytskyi
    • whodeen