README
array-compressor
Compress and decompress arrays.
Installation
npm install array-compressor --save
yarn add array-compressor
Usage
Javascript
var compressor = require("array-compressor")
var compressed = compressor.compress([1, 1, 1, 2, 2, 3])
var decompressed = compressor.decompress(compressed)
# compressed
[ { value: 1, count: 3 },
{ value: 2, count: 2 },
{ value: 3, count: 1 } ]
# decompressed
[1, 1, 1, 2, 2, 3]
TypeScript
import { compress, decompress } from "array-compressor"
const compressed = compress([1, 1, 1, 2, 2, 3])
const decompressed = decompress(compressed)
# compressed
[ { value: 1, count: 3 },
{ value: 2, count: 2 },
{ value: 3, count: 1 } ]
# decompressed
[1, 1, 1, 2, 2, 3]
Generics
import { compress, decompress } from "array-compressor"
const array: number[] = [1, 1, 1, 2, 2, 3] // typed
const compressed = compress<number>(array) // typed
const decompressed = decompress<number>(compressed) // typed
Option
Inject comparison function
import { compress } from "array-compressor"
const array = [{ name: "Tom" }, { name: "Tom" }, { name: "Kerry" }]
const result1 = compress(array)
const result2 = compress(array, (src, dst) => src.name === dst.name)
# result1
[ { value: { name: "Tom" }, count: 1 },
{ value: { name: "Tom" }, count: 1 },
{ value: { name: "Kerry" }, count: 1 } ]
# result2
[ { value: { name: "Tom" }, count: 2 },
{ value: { name: "Kerry" }, count: 1 } ]
Default comparison function is (src, dst) => src === dst
.
Inject copy function
import { decompress } from "array-compressor"
const compressed = [{ value: { name: "Tom" }, count: 2 }, { value: { name: "Kerry" }, count: 1 }]
const result1 = decompress(compressed)
const result2 = decompress(compressed, src => Object.assign({}, src))
result1[0] === result1[1] // true
result2[0] === result2[1] // false
Default copy function is src => src
.
Test
npm run test