array-utils.js
This package provides some simple callbacks for native Array methods (eg. filter
, reduce
) which I use quite often.
List of functions
excludeEmpty()
Removes from array falsey values.
import {excludeEmpty} from '@radmen/array-utils';
const values = [0, 1, '', null];
values.filter(excludeEmpty()); // [1]
replaceWith(predicate, replaceWithData)
Replaces entries from array, which match a predicate with a new value
import {replaceWith} from '@radmen/array-utils';
const values = ['foo', 'bar'];
values.map(replaceWith(item => item === 'foo', 'bar')); // ['bar', 'bar'];
Second argument may be a callback which will provide data for replacement:
values.map(replaceWith(filterByValue('foo'), item => `${item}Bar`)); // ['fooBar', 'bar'];
extendWith(predicate, extendWithData)
Extends object with a given object
import {extendWith} from '@radmen/array-utils'
const values = [
{name: 'foo'},
{name: 'bar'},
];
values.map(extendWith(item => item.name === 'foo', { active: true }); // [{name: 'foo', active: true}, {name: 'bar'}];
pushToBottom(predicate)
Moves items matching predicate to end of an array.
import {pushToBottom} from '@radmen/array-utils';
const values = ['foo', 'bar', 'baz'];
values.sort(pushToBottom(item => item === 'foo')); // ['bar', 'baz', 'foo'];
pushToTop(predicate)
Move item matching predicate to beginning of an array
import {pushToTop} from '@radmen/array-utils';
const values = ['foo', 'bar', 'baz'];
values.sort(pushToTop(item => item === 'baz')); // ['baz', 'foo', 'bar'];
filterByValue(value[, secondValue[, ...]])
Filters array values by given value.
import {filterByValue} from '@radmen/array-utils';
const values = ['foo', 'bar', 'baz'];
values.filter(filterByValue('foo')); // ['foo'];
Function accepts more then one value:
values.filter(filterByValue('foo', 'bar')); // ['foo', 'bar'];
filterByKeyValue(key, value[, secondValue[, ...]])
Filters array of objects by given attribute value.
import {filterByKeyValue} from '@radmen/array-utils';
const values = [{name: 'foo'}, {name: 'bar'}, {name: 'baz'}];
values.filter(filterByKeyValue('name', 'bar')); // [{name: 'bar'}];
Function accepts more then one value:
values.filter(filterByKeyValue('name', 'bar', 'foo')); // [{name: 'foo'}, {name: 'bar'}];
collapse()
Collapses a collection of arrays into a flat collection.
import {collapse} from '@radmen/array-utils';
const values = [[1, 2], [3, 4], [5]];
values.reduce(collapse()); // [1, 2, 3, 4, 5];