diff --git a/src/utils/common.js b/src/utils/common.js index dbc8b546..f445eee0 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -51,4 +51,31 @@ export function select(byCondition, map = i => i) { */ export function choise(scope, selector){ return scope.reduce(selector, null); -} \ No newline at end of file +} + +export function unique(fn) { + return list => [...new Set(list.map(fn))]; +} + +export function branch(fn) { + let keys = unique(fn); + + return list => keys(list) + .reduce((dict, key) => { + dict[key] = list.filter( + i => fn(i) === key + ); + + return dict; + }, {}) + +} + +export function assign(dict, key, value){ + dict[key] = value; + return dict; +} + +export function map(v, fn) { + return value => fn(value) ? v : value; +}