caro v2.1.1
Caro.js
General libraries for JavaScript / Node.js
And also can extend from lodash
Install
In Html
<script src="/js/caro.js"></script>
<script>
var arr = [1, 2, 3];
caro.cleanArr(arr); // []
</script>
In Html with lodash
<script src="/js/lodash.js"></script>
<script src="/js/caro.js"></script>
<script>
// You can use caro as lodash
var arr = [1, 2, 3];
caro.cleanArr(arr); // []
caro.isArray(arr); // true
</script>
In Node.js
$ npm install caro
var arr = [1, 2, 3];
caro.cleanArr(arr); // []
In Node.js with lodash
$ npm install lodash
$ npm install caro
// You can use caro as lodash
var arr = [1, 2, 3];
caro.cleanArr(arr); // []
caro.isArray(arr); // true
Index
Array | Helper | Loop | Object | Path | String | TypeCheck | TypeCover
Array
- cleanArr(arr) - remove all items in array
var arr = [1, 2];
caro.cleanArr(arr); // []
- pushNoDuplicate(arr, val...) - push value to array exclude duplicate
var arr = [1, 2, 3];
var r = caro.pushNoDuplicate(arr, 1, 3, {}, {}, 3); // [1, 2, 3, {}, {}]
- pushNoEmptyVal(arr, val...) - push non-empty value to array
var arr = [1, 2, 3];
var r = caro.pushNoEmptyVal(arr, 1, 'caro', {}, undefined, null, 0, '', []); // [1, 2, 3, 1, 'caro', 0]
- pullEmptyVal(arr) - pull empty-value from array
var arr = [1, '', null, 'caro'];
var r = caro.pullEmptyVal(arr);
console.log(arr); // [1, 'caro']
console.log(r); // ['', null]
- pullUnBasicVal(arr) - pull un-basic-value(exclude boolean/string/number) from array
var arr = [1, {a: 1}, 'caro'];
var r = caro.pullUnBasicVal(arr);
console.log(arr); // [1, 'caro']
console.log(r); // [{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.randomPick(arr); // r should be an item of arr, and arr is not changed
var r2 = caro.randomPick(arr2, true); // 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.sumOfArr(arr); // 3
var r2 = caro.sumOfArr(arr, true); // 8
Helper
- executeIfFn(fn arg...) - execute it if argument is function
var arg = function (i) {
return ++i;
};
var arg2 = null;
var r = caro.executeIfFn(arg, 12); // 13
var r2 = caro.executeIfFn(arg2); // undefined
- formatMoney(str type | opt) - format string/number to money type
var r = caro.formatMoney(null); // '0'
var r2 = caro.formatMoney('12003000.923', 'int'); // '12,003,000'
var r3 = caro.formatMoney(12003000.923, 'sInt'); // '$12,003,000'
var r4 = caro.formatMoney(12003000.923, {
float: 0, separated: ',',
decimal: '.', prefix: '',
forceFloat: false
}); // '12,003,000' - here is default options
var r5 = caro.formatMoney(12003000.923, {
float: 5, forceFloat: true
}); // '12,003,000.92300'
- getFnName(fn) - get function name
var arg = function (i) {
return ++i;
};
var arg2 = function isFn(){};
var r = caro.getFnName(arg); // ''
var r2 = caro.getFnName(arg2); // 'isFn'
- getFnBody(fn) - get function body
var arg = function (i) {
return ++i;
};
var r = caro.getFnBody(arg); // '\n return ++i;\n '
- getStackList(start=0) - get stack-information list
// in /caro/caro.js
var r = caro.getStackList();
/*
[{
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 = 0
var countB = 0
caro.setInterval(function() {
++countA
console.log('A Run ' + countA + ' times');
}, 300, 3); // exclude function 3 times, each 300 milliseconds
caro.setInterval(function() {
if(countB === 4){
return false;
}
++countB
console.log('B Run ' + countB + ' times');
}, 300); // exclude function each 300 milliseconds, and stop when countB === 4
- random(len opt) - create random string
var r = caro.random(15); // e.g. '6EJDRlBy6Z25s2O'
var r2 = caro.random(15, {
lower: true,
upper: true,
num: true,
exclude: ''
}); // here is default options
var r3 = caro.random(15, {
lower: false,
upper: true,
num: false,
exclude: 'A,B,C'
}); // - will create uppercase-only, and without A/B/C
- randomInt(max min = 0) - random an integer
var r = caro.randomInt(3); // integer from 0 to 3
var r2 = caro.randomInt(3, -3); // integer from -3 to 3
var r3 = caro.randomInt(); // 0
- randomNum(max min = 0) - random a number
var r = caro.randomNum(3); // number from 0 to 3
var r2 = caro.randomNum(3, -3); // number from -3 to 3
var r3 = caro.randomNum(); // 0
- serializeUrl(str oArgs) - format object to URL params
var arg = 'http://localhost';
var obj = {a: 1, b: 2, c: null};
var r = caro.serializeUrl(arg, obj); // 'http://localhost?a=1&b=2'
var r2 = caro.serializeUrl(arg, obj, true); // 'http://localhost?a=1&b=2&c='
Loop
- loop(fn, start=0, end=0 step=1) - for-loop
caro.loop(function (i){
// i = 10, 9,...0
}, 10, 0);
caro.loop(function (i){
if(i > 5) return false;
// i = 1, 3, 5
}, 1, 10, 2);
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.assignByKeys(obj, obj2, ['d', 'f']);
// obj = {a: 1, b: 2, c: 3, d: 1, f: 3}
obj = {a: 1, b: 2, c: 3, d: 4};
caro.assignByKeys(obj, obj2, ['d', 'f'], false);
// 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.catching(r, obj); // {name: 'Caro'}
caro.catching(r2, obj, obj2); // {name: 'Caro', city: 'Kaohsiung'}
- classify(obj) - group by argument type
var r = caro.classify({
a: 1,
b: 'd',
c: {cc: 1},
d: function(){},
e: ['caro'],
f: 'FF',
});
/*
{
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.differentKeys(obj, obj2); // ['age']
var r2 = caro.differentKeys(obj, obj2, true); // ['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.hasEqualKeys(obj, obj2); // true
var r2 = caro.hasEqualKeys(obj, obj3); // 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.sameKeys(obj, obj2); // ['a', 'c', 'e']
Path
- getDirPath(path) - get dir-path
var r = caro.getDirPath('a/b/c/d.js'); // 'a/b/c/'
var r2 = caro.getDirPath('a/b/a'); // 'a/b/'
- getFileName(path getFull=true) - get filename of path
var r = caro.getFileName('a/b/c/d.js'); // 'd.js'
var r2 = caro.getFileName('a/b/c/d.js', false); // 'd'
var r3 = caro.getFileName('a/b/a'); // 'a'
- getExtendName(path getFull=true) - get extend-name of filename
var r = caro.getExtendName('a/b/c/d.js'); // '.js'
var r2 = caro.getExtendName('a/b/c/d.js', false); // 'js'
var r3 = caro.getExtendName('a/b/a'); // ''
String
- addHead(str, addStr) - add prefix-string if not exists
var r = caro.addHead('moon', 'mo'); // 'moon'
var r2 = caro.addHead('Moon', 'is'); // 'isMoon'
- addTail(str, addStr) - add suffix-string if not exists
var r = caro.addTail('moon', 'on'); // 'moon'
var r2 = caro.addTail('moon', 'Day'); // 'moonDay'
- brToWrap(str, addStr) - cover '\<br />'to wrap
var r = caro.brToWrap('this is<br />wrap content.'); // 'this is\nwrap content.'
- insertStr(str1, str2, position) - insert string to another
var r = caro.insertStr('Lift is good', ' so', 7); // 'Lift is so good'
var r2 = caro.insertStr('I love my', ' dog'); // 'I love my dog'
- lowerStr(str start = 0 or callback) - cover string to lowercase
var r = caro.lowerStr('I AM CARO'); // 'i am caro'
var r2 = caro.lowerStr('I AM CARO', 5); // 'I AM caro'
var r3 = caro.lowerStr('I AM CARO', 5, 6); // 'I AM cARO'
var r4 = caro.lowerStr('I AM CARO', function(letter){
if(letter !== 'C'){
return true;
}
}); // 'i am Caro'
var r5 = caro.lowerStr('I AM CARO', function(letter, i){
if(i > 1){
return true;
}
}); // 'I am caro'
- replaceAll(str, find, replace) - replace string that matched
var r = caro.replaceAll('I*am*{Caro}.', '*', '-'); // 'I-am-{Caro}.'
var r2 = caro.replaceAll('I-am-Caro.', '-', '@'); // 'I@am@Caro.'
- replaceLast(str, find, replace) - replace string that last-matched
var r = caro.replaceLast('I-am-Caro.', '-', ' '); // 'I-am Caro.'
var r2 = caro.replaceLast('I am Caro not Colo.', 'C', 'T'); // 'I am Caro not Tolo.'
- splitByWrap(str) - split string by wrap
var r = caro.splitByWrap('''
I love
my mother
and
my father
'''); // [ 'I love', 'my mother', 'and', 'my father' ]
- splitStr(str splitter) - split string
var r = caro.splitStr('i am caro', ' '); // ['i', 'am', 'caro']
var r2 = caro.splitStr('I ~love Snoopy !~!', ['~', ' ']); // ['I', '', 'love', 'Snoopy', '!', '!']
- strToBool(str) - return false if string like'false', otherwise return true
var r = caro.strToBool('false'); // false
var r2 = caro.strToBool('fAlse'); // false
var r3 = caro.strToBool('123'); // true
var r4 = caro.strToBool(''); // false
- upperStr(str start = 0 or callback) - cover string to uppercase
var r = caro.upperStr('i am caro'); // 'I AM CARO'
var r2 = caro.upperStr('i am caro', 5); // 'i am CARO'
var r3 = caro.upperStr('i am caro', 5, 6); // 'i am Caro'
var r4 = caro.upperStr('i am caro', function(letter){
if(letter === 'i' or letter === 'c'){
return true;
}
}); // 'I am Caro'
var r5 = caro.upperStr('i am caro', function(letter, i){
if(i < 1){
return true;
}
}); // 'I am caro'
- wrapToBr(str, addStr) - cover wrap to '\<br />'
var r = caro.wrapToBr(''''
this is
wrap content.
'''); // 'this is<br />wrap content.'
TypeCheck
- isBasicVal(arg...) - check if basic-value (boolean/string/number)
var r = caro.isBasicVal(1, '', false); // true
var r2 = caro.isBasicVal({}); // false
- isEmptyVal(arg...) - check if empty-value ( {} | [] | null | '' | undefined | NaN )
var r = caro.isEmptyVal(0); // false
var r2 = caro.isEmptyVal({}); // true
- isEasingTrue(arg...) - check if true or 'true' or 1
var r = caro.isEasingTrue('True'); // true
var r2 = caro.isEasingTrue(1); // true
- isEasingFalse(arg...) - check if false or 'false' or 0
var r = caro.isEasingFalse('false'); // true
var r2 = caro.isEasingFalse(0); // true
- isJson(arg...) - check if JSON
var r = caro.isJson(null); // true
var r2 = caro.isJson('caro'); // false
var r3 = caro.isJson('{"a":1}') // true
var r4 = caro.isJson('{"a":1, "b": function(){}}') // false
- isObjJson(arg...) - check if JSON first, then check if object-type
var r = caro.isObjJson('{"a": 1}'); // true
var r2 = caro.isObjJson('{"a": function(){}}'); // false
var r3 = caro.isObjJson({b: 2}); // false
- isUpper(str) - check string if all uppercase
var r = caro.isUpper('CARO'); // true
var r2 = caro.isUpper('caro'); // false
- isLower(str) - check string if all lowercase
var r = caro.isLower('caro'); // true
var r2 = caro.isLower('Caro'); // false
TypeCover
- toStr(arg) - cover to string
var r = caro.toStr('3'); // '3'
var r2 = caro.toStr(['caro', undefined]); // 'caro,'
var r3 = caro.toStr({
a: false,
b: null,
c: 0,
d: NaN,
e: undefined,
f: [],
g: function() {}
}); // '[object Object]'
var r4 = caro.toStr(null); // 'null'
var r5 = caro.toStr(undefined); // 'undefined'
var r6 = caro.toStr(function () { }); // 'function () { }'
- toInt(arg) - cover to integer
var r = caro.toInt('3'); // 3
var r2 = caro.toInt('3.2'); // 3
var r3 = caro.toInt('caro'); // NaN
var r4 = caro.toNum({}); // NaN
var r5 = caro.toInt(null); // NaN
var r6 = caro.toInt(undefined); // NaN
var r7 = caro.toInt(function () { }); // NaN
- toNum(arg) - cover to number
var r = caro.toNum('3'); // 3
var r2 = caro.toNum('3.2'); // 3.2
var r3 = caro.toNum('caro'); // NaN
var r4 = caro.toNum({}); // NaN
var r5 = caro.toNum(null); // 0
var r6 = caro.toNum(undefined); // NaN
var r7 = caro.toNum(function () { }); // NaN
- toFixedNum(arg dec=2) - cover to fixed-number
var r = caro.toFixedNum('3.4355'); // 3.44
var r2 = caro.toFixedNum(2.12345, 3); // 2.123
var r3 = caro.toFixedNum('caro', 3) // NaN
- toJson(arg replacer=null) - cover to JSON
var arg = {a: 3, b: 5};
var replacer = function (key, val) {
if (key === '') {
return val; // the arg itself
}
return val + 1;
};
var r = caro.toJson(3.4); // '3.4'
var r2 = caro.toJson(arg, replacer); // '{"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
6 years ago
7 years ago
7 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago