chainable-array v1.1.0
chainable-array 
A function that extends Array with chainable array methods.
More functionality to the "simple" Array, but only with chainable methods.
Don't expect for functions which are not chainable, i.e. methods which won't return an array.
Installation
npm install chainable-arrayUsage
import _A from 'chainable-array';
const arr = [1, null, 2, 2, 3];
_A(arr)
.first(4) // [1, null, 2, 2]
.last(3) // [null, 2, 2]
.removeFalsy() // [2, 2]
.unique() // [2]API
**All the APIs returns a new array
constructor
The ChainableArray constructor is a bit different than the Array constructor.
If you pass only one argument, it won't define the size of the array, but it will create an array with one value.
import { ChainableArray } from 'chainable-array';
const arr = new ChainableArray(5) // [5]first
Returns the first n (defaults to 1) elements
import _A from 'chainable-array';
_A([1, 2, 3]).first(2) // [1, 2]last
Returns the last n (defaults to 1) elements
import _A from 'chainable-array';
_A([1, 2, 3]).last(2) // [2, 3]log
Simple, console.log for debugging
import _A from 'chainable-array';
_A([1, 2, 3]).log() // [ 1, 2, 3 ]orderBy
Sequence of sortBy for array of objects, in order to get "nested" sorting
Args: list of: string | o => any, "asc" | "desc" (defaults to "asc")
import _A from 'chainable-array';
const users = [
{ user: { name: "Alice" }, age: 20, val: 1 },
{ user: { name: "Bob" }, age: 40, val: 4 },
{ user: { name: "Alice" }, age: 30, val: 2 },
{ user: { name: "Bob" }, age: 40, val: 3 },
]
const ordered = _A(users).orderBy(
o => o.user.name,
["age", "desc"],
"val"
)
const expected = [
{ user: { name: "Alice" }, age: 30, val: 2 },
{ user: { name: "Alice" }, age: 20, val: 1 },
{ user: { name: "Bob" }, age: 40, val: 3 },
{ user: { name: "Bob" }, age: 40, val: 4 }
]
// ordered == expectedremove
Remove elements from the array
Args: Primitive | ((value, index, array) => boolean)
import _A from 'chainable-array';
_A([1, 2, 3])
.remove(2) // [1, 3]
.remove(v => v > 2) // [1]removeFalsy
Remove falsy values from the array
import _A from 'chainable-array';
_A([1, 2, 3, null, undefined, 0, ""])
.removeFalsy() // [1, 2, 3]sortBy
sort for array of objects
Args: string | o => any, "asc" | "desc" (defaults to "asc")
import _A from 'chainable-array';
const users = [
{ user: { name: "Alice" }, age: 20, val: 1 },
{ user: { name: "Bob" }, age: 40, val: 4 },
{ user: { name: "Alice" }, age: 30, val: 2 },
{ user: { name: "Bob" }, age: 40, val: 3 },
]
const ordered = _A(users).sortBy(o => o.user.name, "desc")
const expected = [
{ user: { name: "Bob" }, age: 40, val: 4 },
{ user: { name: "Bob" }, age: 40, val: 3 },
{ user: { name: "Alice" }, age: 20, val: 1 },
{ user: { name: "Alice" }, age: 30, val: 2 }
]
// ordered == expectedtoArray
Returns Array using the Array.from method
import _A from 'chainable-array';
_A([1, 2, 3]) // instanceof ChainableArray
_A([1, 2, 3]).toArray() // NOT instanceof ChainableArrayunique
Returns unique values from the array
import _A from 'chainable-array';
_A([1, 2, 1, 3, 2]) // [1, 2, 3]