ct-js-utils
A javascript utils by CT.
How to get
npm install --save ct-js-utils
APIs
- flat2DList(list, getList)
- isOk(value)
- getValue(defaultValue, arg1, ..., argN)
- groupByKey(listOrObj, getKeyFunc, ignoreFunctions)
- reduceByKey(listOrObj, getKeyFunc, ignoreFunctions, reduceFunc, defaultValue)
- getNewId(length, characters)
- objectMap(obj, mapFunc, ignoreFunctions)
- objectReduce(obj, reduceFunc, defaultValue, ignoreFunctions)
- countByKey(listOrObj, getKeyFunc, ignoreFunctions)
- getUniqueKeysAfterCount(listOrObj, getKeyFunc, ignoreFunctions)
- increment(value, diff)
- pickOne(value, otherwise, whiteList, blackList)
- randPosInt(listSize)
- randIndex(listOrObj, ignoreFunctions)
- randPick(listOrObj, ignoreFunctions)
flat2DList(list, getList)
Convert 2D list into 1D.
let list = 1 2 2 3 3 3;todeep; let objList = list: 'a' list: 'a' 'b' list: 'a' 'c' 'd' ; todeep;
groupByKey(listOrObj, getKeyFunc, ignoreFunctions)
Group obj to an array base on the key(getKeyFunc(obj)).
let list = 12345;{ return num % 2;}let result = util;todeep;todeep;
reduceByKey(listOrObj, getKeyFunc, ignoreFunctions, reduceFunc, defaultValue)
Reduce obj to an array base on the key(getKeyFunc(obj)).
let list = 12345;{ return num % 2;}let result = util;to;to;
getNewId(length, characters)
Get a string with certain length and random chose from a-z, A-Z, 0-9 in default.
let newId = util;to;//each character in this string is a-z, A-Z, 0-9to;//advanced usage, specified character listnewId = util;to;tonot;
objectMap(obj, mapFunc, ignoreFunctions)
A map function of Object. Ignore functions in the object in default.
let obj = a: 1 b: 2 c: 3 {};{ return value * 2;}todeep;
objectReduce(obj, reduceFunc, defaultValue, ignoreFunctions)
A reduce function of Object. Ignore functions in the object in default.
defaultValue, ignoreFunctions
are optional.
let obj = a: 1 b: 2 c: 3;{ return prev + current;}{ return '' + prev + current;}to;to;to;
countByKey(listOrObj, getKeyFunc, ignoreFunctions)
Get a object which contain same value(String) after getKeyFunc.
default getKeyFunc
getKeyFunc = function(key){ return key;};
let arr = 12311;let obj = util;to;to;to;tobe;//all the key is treat as string valuearr;arr;to; { ifkey < 2 return '<2'; else return '>=2'; }//with getKey function, [1,2,3,1,1,'1','1']obj = util;to;to; //input is an objectlet input = a:1 b:1 c:2 1:3 'test': '1';obj = util;to;to;to;tobe;
getUniqueKeysAfterCount(listOrObj, getKeyFunc, ignoreFunctions)
Get an unique key array after countByKey
let arr = 12311'1''1';console; //['1','2','3']
increment(value, diff)
Get a result after value + diff (default 1)
let undef;to;to;to;to;to;to;
pickOne(value, otherwise, whiteList, blackList)
Pick value or otherwise by whiteList and blackList.
whiteList can be [0, '', null, undefiend]
(which put into if will go to else)
If value
is in blackList
, will return otherwise
.
let undef;to;//whiteListto;to;tobe;tobe;//blackListto;to;
isOk(value)
Return false only when value is null or undefined.
let undef;to;to;to;to;to;
getValue(defaultValue, arg1, ..., argN)
Avoid null or undefined from 'a'-'f' test['a'].get('b')['c']['d'].func2('e')['f'].
If it is null or undefined in the path, will get defaultValue. Simplify it to
If arg is function, will treat it as a getter from prev result. Otherwise, as a key to get related value from object(array).
const getValue = utilgetValue;let undef; //obj[k1][k2], obj is undefined, get defaultlet t0 = ;to; //test, test is not null and not undefined, get test itselflet test = {};let t10 = ;todeep; //test[k1][k2], test[k1] is undefined, get defaultlet t1 = ;to; //one level retreive//test[k1] is exist and neither undefined nor null, get test[k1]testa = b: {} ;let t11 = ;todeep; //2 level retreive//test[k1][k2] is exist and neither undefined nor null, get test[k1][k2]let t2 = ;todeep; //multi level(3) retreive//test[k1][k2][k3] is exist, get test[k1][k2][k3]const ABC = value: 5 { return thisvalue + arg; };testabc = ABC;let t3 = ;to;todeep; //test[k1][k2][k3].get(100)let t4 = ; to; //only set default, return defaultlet t5 = ;to; { let obj = {}; objkey = key; objget = getObj; objnull = null; return obj;} let testObj = ; //testObj.get(k1).get(k2), test.get(k1) is null, get defaultlet t6 = ;to; //testObj.get(k1).get(k2), return test.get(k1).get(k2)let t7 = ;todeep; //test[k1].get[k2]testk1 = ;let t8 = ;todeep;
randPosInt(listSize)
If listSize is not > 0, return -1, Otherwise return 0 ~ listSize -1;
let undef;to;to;to; let size = 100;let result = util;tobeat;tobeat; //is an Integerto;to;
randIndex(listOrObj, ignoreFunctions)
return the index of list or obj, ignoreFunctions is false in default.
let list = 1 2 3 4 5;let obj = a: list0 b: list1 c: list2 d: list3 e: list4; let size = listlength; //test listlet index = util;tobeat;tobeat; //is an Integertobe;tobetrue; //test objectlet result = util;to;tobe; obj {}; result = util;to;tobe; result = util;to;tonot;
randPick(listOrObj, ignoreFunctions)
return one element from list or obj, ignoreFunctions is false in default
let list = 1 2 3 4 5;let obj = a: list0 b: list1 c: list2 d: list3 e: list4; let size = listlength; //test listlet result = util;tobe; //test objectresult = util;tobe; obj {}; //test object with function elementresult = util;tobe; let targets = Object;let result1 = util;let result2 = util; tobe;tobe;