1.0.4 • Published 7 years ago
array-compressor v1.0.4
array-compressor
Compress and decompress arrays.
Installation
npm install array-compressor --save
yarn add array-compressorUsage
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) // typedOption
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] // falseDefault copy function is src => src.
Test
npm run test