1.0.4 • Published 6 years ago

array-compressor v1.0.4

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

array-compressor

Build Status Downloads Version License

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
1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago