From b21144e87d69b7b656d5028b9a6d59e222c4354c Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Thu, 3 Mar 2016 01:29:17 +0300 Subject: [PATCH] + common utils: unique, assign, map --- src/utils/common.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) 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; +}