Caro.js
General libraries for JavaScript / Node.js
And also can extend from lodash
Install
In Html
In Html with lodash
In Node.js
$ npm install caro
var arr = 1 2 3;caro; // []
In Node.js with lodash
$ npm install lodash$ npm install caro
// You can use caro as lodashvar arr = 1 2 3;caro; // []caro; // true
Index
Array | Helper | Loop | Object | Path | String | TypeCheck | TypeCover
Array
- cleanArr(arr) - remove all items in array
var arr = 1 2;caro; // []
- pushNoDuplicate(arr, val...) - push value to array exclude duplicate
var arr = 1 2 3;var r = caro; // [1, 2, 3, {}, {}]
- pushNoEmptyVal(arr, val...) - push non-empty value to array
var arr = 1 2 3;var r = caro; // [1, 2, 3, 1, 'caro', 0]
- pullEmptyVal(arr) - pull empty-value from array
var arr = 1 '' null 'caro';var r = caro;console; // [1, 'caro']console; // ['', null]
- pullUnBasicVal(arr) - pull un-basic-value(exclude boolean/string/number) from array
var arr = 1 a: 1 'caro';var r = caro;console; // [1, 'caro']console; // [{a: 1}]
- randomPick(arr [removeFromArr=false]) - select item from array by random
var arr = 1 2 3;var arr2 = 1 2 3;var r = caro; // r should be an item of arr, and arr is not changedvar r2 = caro; // r2 should be an item of arr2, and arr2 should has not it
- sumOfArr(arr [force=false]) - get sum-value in array
var arr = 1 2 '5';var r = caro; // 3var r2 = caro; // 8
Helper
- executeIfFn(fn [arg...]) - execute it if argument is function
var { return ++i;};var arg2 = null;var r = caro; // 13var r2 = caro; // undefined
- formatMoney(str [type | opt]) - format string/number to money type
var r = caro; // '0' var r2 = caro; // '12,003,000'var r3 = caro; // '$12,003,000'var r4 = caro; // '12,003,000' - here is default optionsvar r5 = caro; // '12,003,000.92300'
- getFnName(fn) - get function name
var { return ++i;};var {};var r = caro; // ''var r2 = caro; // 'isFn'
- getFnBody(fn) - get function body
var { return ++i;};var r = caro; // '\n return ++i;\n '
- getStackList([start=0] [length=0]) - get stack-information list
// in /caro/caro.jsvar r = caro;/*[{ stack: 'Context.<anonymous> (/caro/caro.js:1:14)' method: 'Context.<anonymous>', path: '/caro/caro.js', line: '1', position: '14', file: 'caro.coffee' }, ... ...]*/
- setInterval(fn, ms [excludeTimes = 0]) - easy-use for setInterval
var countA = 0var countB = 0caro; // exclude function 3 times, each 300 millisecondscaro; // exclude function each 300 milliseconds, and stop when countB === 4
- random(len [opt]) - create random string
var r = caro; // e.g. '6EJDRlBy6Z25s2O'var r2 = caro; // here is default optionsvar r3 = caro; // - will create uppercase-only, and without A/B/C
- randomInt(max [min = 0]) - random an integer
var r = caro; // integer from 0 to 3var r2 = caro; // integer from -3 to 3var r3 = caro; // 0
- randomNum(max [min = 0]) - random a number
var r = caro; // number from 0 to 3var r2 = caro; // number from -3 to 3var r3 = caro; // 0
- serializeUrl(str [oArgs] [coverEmpty=false]) - format object to URL params
var arg = 'http://localhost';var obj = a: 1 b: 2 c: null;var r = caro; // 'http://localhost?a=1&b=2'var r2 = caro; // 'http://localhost?a=1&b=2&c='
Loop
- loop(fn, start=0, end=0 [step=1]) - for-loop
caro;caro;
Object
- assignByKeys(obj, obj2, keys [replace=true]) - assign elements to from obj2 to obj1 by keys
var obj = a: 1 b: 2 c: 3 d: 4;var obj2 = d: 1 e: 2 f: 3;caro;// obj = {a: 1, b: 2, c: 3, d: 1, f: 3}obj = a: 1 b: 2 c: 3 d: 4;caro;// obj = {a: 1, b: 2, c: 3, d: 4, f: 3}
- catching(obj, obj2...) - catch other object-values to target-object when it has key matched
var obj = name: 'Caro' age: 18;var obj2 = country: 'Taiwan' city: 'Kaohsiung';var r = name: '';var r2 = name: '' city: '';caro; // {name: 'Caro'}caro; // {name: 'Caro', city: 'Kaohsiung'}
- classify(obj) - group by argument type
var r = caro;/*{ bool: [], str: [ 'd', 'FF' ], num: [ 1 ], arr: [ [ 'caro' ] ], obj: [ { cc: 1 } ], fn: [ [Function] ] }*/
- differentKeys(obj, obj2 [reverse=false]) - get keys that obj has but obj2 not
var obj = name: 'Caro' age: 18;var obj2 = name: 'Snoopy' country: 'Taiwan' city: 'Kaohsiung';var r = caro; // ['age']var r2 = caro; // ['country', 'city']
- hasEqualKeys(obj, obj2) - check if all keys are equal between objects
var obj = name: 'Caro' age: 18;var obj2 = name: 'Snoopy' age: 3;var obj3 = name: 'Kitty' country: 'Japan';var r = caro; // truevar r2 = caro; // false
- sameKeys(obj, obj2) - get keys that is same between objects
var obj = a: 1 b: 2 c: 3 e: 4;var obj2 = a: 3 c: 4 d: 5 e: 6;var r = caro; // ['a', 'c', 'e']
Path
- getDirPath(path) - get dir-path
var r = caro; // 'a/b/c/'var r2 = caro; // 'a/b/'
- getFileName(path [getFull=true]) - get filename of path
var r = caro; // 'd.js'var r2 = caro; // 'd'var r3 = caro; // 'a'
- getExtendName(path [getFull=true]) - get extend-name of filename
var r = caro; // '.js'var r2 = caro; // 'js'var r3 = caro; // ''
String
- addHead(str, addStr) - add prefix-string if not exists
var r = caro; // 'moon'var r2 = caro; // 'isMoon'
- addTail(str, addStr) - add suffix-string if not exists
var r = caro; // 'moon'var r2 = caro; // 'moonDay'
- brToWrap(str, addStr) - cover '<br />'to wrap
var r = caro; // 'this is\nwrap content.'
- insertStr(str1, str2, [position]) - insert string to another
var r = caro; // 'Lift is so good'var r2 = caro; // 'I love my dog'
- lowerStr(str [start = 0 or callback] [end]) - cover string to lowercase
var r = caro; // 'i am caro'var r2 = caro; // 'I AM caro'var r3 = caro; // 'I AM cARO'var r4 = caro; // 'i am Caro'var r5 = caro; // 'I am caro'
- replaceAll(str, find, replace) - replace string that matched
var r = caro; // 'I-am-{Caro}.'var r2 = caro; // 'I@am@Caro.'
- replaceLast(str, find, replace) - replace string that last-matched
var r = caro; // 'I-am Caro.'var r2 = caro; // 'I am Caro not Tolo.'
- splitByWrap(str) - split string by wrap
var r = caro; // [ 'I love', 'my mother', 'and', 'my father' ]
- splitStr(str [splitter]) - split string
var r = caro; // ['i', 'am', 'caro']var r2 = caro; // ['I', '', 'love', 'Snoopy', '!', '!']
- strToBool(str) - return false if string like'false', otherwise return true
var r = caro; // falsevar r2 = caro; // falsevar r3 = caro; // truevar r4 = caro; // false
- upperStr(str [start = 0 or callback] [end]) - cover string to uppercase
var r = caro; // 'I AM CARO'var r2 = caro; // 'i am CARO'var r3 = caro; // 'i am Caro'var r4 = caro; // 'I am Caro'var r5 = caro; // 'I am caro'
- wrapToBr(str, addStr) - cover wrap to '<br />'
var r = caro
TypeCheck
- isBasicVal(arg...) - check if basic-value (boolean/string/number)
var r = caro; // truevar r2 = caro; // false
- isEmptyVal(arg...) - check if empty-value ( {} | [] | null | '' | undefined | NaN )
var r = caro; // falsevar r2 = caro; // true
- isEasingTrue(arg...) - check if true or 'true' or 1
var r = caro; // truevar r2 = caro; // true
- isEasingFalse(arg...) - check if false or 'false' or 0
var r = caro; // truevar r2 = caro; // true
- isJson(arg...) - check if JSON
var r = caro; // truevar r2 = caro; // falsevar r3 = caro // truevar r4 = caro // false
- isObjJson(arg...) - check if JSON first, then check if object-type
var r = caro; // truevar r2 = caro; // falsevar r3 = caro; // false
- isUpper(str) - check string if all uppercase
var r = caro; // truevar r2 = caro; // false
- isLower(str) - check string if all lowercase
var r = caro; // truevar r2 = caro; // false
TypeCover
- toStr(arg) - cover to string
var r = caro; // '3'var r2 = caro; // 'caro,'var r3 = caro; // '[object Object]'var r4 = caro; // 'null'var r5 = caro; // 'undefined'var r6 = caro; // 'function () { }'
- toInt(arg) - cover to integer
var r = caro; // 3var r2 = caro; // 3var r3 = caro; // NaNvar r4 = caro; // NaNvar r5 = caro; // NaNvar r6 = caro; // NaNvar r7 = caro; // NaN
- toNum(arg) - cover to number
var r = caro; // 3var r2 = caro; // 3.2var r3 = caro; // NaNvar r4 = caro; // NaNvar r5 = caro; // 0var r6 = caro; // NaNvar r7 = caro; // NaN
- toFixedNum(arg [dec=2]) - cover to fixed-number
var r = caro; // 3.44var r2 = caro; // 2.123var r3 = caro // NaN
- toJson(arg [replacer=null] [space=0]) - cover to JSON
var arg = a: 3 b: 5;var { if key === '' return val; // the arg itself return val + 1;};var r = caro; // '3.4'var r2 = caro; // '{"a":4,"b":6}'
History
- refine some functions replaced by lodash - v2.1.0
- No more support if less than node.js v6 - v2.0.0
- Update [Loop -> loop] - v1.0.1
- Be independent from lodash - v1.0.0
- Add [Helper -> randomNum] - v0.24.9
- Add [Helper -> setInterval] - v0.23.6
- Move [String -> random to Helper -> random] - v0.22.6
- Update [String -> upperStr] - v0.22.5
- Update [String -> lowerStr] - v0.22.4
- Remove [Object -> toWord] - v0.22.3
- Update CLI setting - v0.21.3
- Add [Array -> randomPick] - v0.21.2
- Add [Helper -> randomInt] - v0.20.2
- Update [Object -> toWord] - v0.19.2
- Update Package - v0.19.1
- Add [Array -> cleanArr] - v0.19.0
- Add [String -> insertStr] - v0.18.0
- Add [Object -> assignByKeys] - v0.17.0
- Fix version - v0.16.1
- Add [Object -> sameKeys] - v0.16.0
- Rename [Object -> equalKeys to hasEqualKeys] - v0.15.1