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.
npm install chainable-array
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]
**All the APIs returns a new array
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]
Returns the first
n (defaults to 1) elements
import _A from 'chainable-array';
_A([1, 2, 3]).first(2) // [1, 2]
Returns the last
n (defaults to 1) elements
import _A from 'chainable-array';
_A([1, 2, 3]).last(2) // [2, 3]
Simple, console.log for debugging
import _A from 'chainable-array';
_A([1, 2, 3]).log() // [ 1, 2, 3 ]
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 == expected
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]
Remove falsy values from the array
import _A from 'chainable-array';
_A([1, 2, 3, null, undefined, 0, ""])
.removeFalsy() // [1, 2, 3]
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 == expected
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 ChainableArray
Returns unique values from the array
import _A from 'chainable-array';
_A([1, 2, 1, 3, 2]) // [1, 2, 3]