array-dsl
v1.6.59
Published
A Dsl approach toward arrays.
Downloads
17
Maintainers
Readme
An array focused DSL
QA monorepo
Installation
npm install array-dsl --save
Motivation
This is project helps you to deal with arrays in a more functional/DLS way. This is also a presentation about how easy is to craft your own dsl with the help of the dsl-framework
Usage
I present the usage of the library with the example below; there are many ways to use it, let's start with the most practically applicable one.
Examples
const example = [1,3,2,[4],[5,[6],6]]
const arrayDsl = require('array-dsl')
// flatten
let result = arrayDsl(example).flatten()
// [1,3,2,4,5,6,6]
// unique
result = arrayDsl(example).flatten.unique()
// [1,3,2,4,5,6]
// sort
result = arrayDsl(example).flatten.unique.sort()
// [1,2,3,4,5,6]
// sort
result = arrayDsl(example).flatten
.unique.xor([1,7]).sort()
// [2,3,4,5,6,7]
// reverse
result = arrayDsl(example).flatten
.unique.xor([1,7]).sort.reverse()
// [7,6,5,4,3,2]
// slice
result = arrayDsl(example).flatten
.unique.xor([1,7]).sort().slice(1)()
// [3,4,5,6,7]
// randomItem
let randonItem = result = arrayDsl(example).flatten
.unique.xor([1,7]).sort().slice(1).randomItem()
randonItem()
// this could return an item from the array [3,4,5,6,7]
// you can call it as much as you want
// union
result = arrayDsl(example).flatten
.unique.xor([1,7]).sort().slice(1).union([1,8,2,3])()
// [1,2,3,4,5,6,7,8]
// union
result = arrayDsl([1,1,1,2,3,4,5]).union([1,8,2,3])()
// [1,2,3,4,5,8]
// if no arrify is called the same value/object is given back if it not an array
const notChanged2 = arrayDsl(3).unique.sort()
// 3
const rlastComplex = arrayDsl([1,1,1,2,3,4,5])
.union([1,8,2,3]).last()
// 8
const first = arrayDsl([1,2,3]).first()
// 1
// head is the alias of first
const head = arrayDsl([1,2,3]).head()
// 1
// last
const last = arrayDsl([1,2,3]).last()
// 3
// last + arrify
const lastAffify = arrayDsl([1,2,3]).last.arrify()
// [3]
// Arrify transforms non array parameters to arrays
// https://www.npmjs.com/package/arrify
const arrify = arrayDsl(3).arrify()
// [3]
const arrify = arrayDsl(3).last.arrify()
// [3]
// if the parameter is not an array whatever
// you do with it it will give back at the end
// the variable you added to it.
const notChanged = arrayDsl(3)()
// 3
const flast = arrayDsl([1,2,3]).tail()
// [1,2,3,4,5,8]
d3-array functions:
const min = arrayDsl([1,2,3].min())
// 3
const max = arrayDsl([1,2,3].max())
// 3
const extent = arrayDsl([3,2,1].extent())
// [1,3]
const sum = arrayDsl([1,2,3].sum())
// 6
const median = arrayDsl([1,2,3].median())
// 2
const quantile = arrayDsl([0,10,1000,10000].quantile(0))
// 0
const variance = arrayDsl([0,10,1000,10000].variance())
const deviation = arrayDsl([0,10,1000,10000].deviation())