Skip to content

ZinLiao/handybox

Repository files navigation

Who am I ?

I am an ECMAScript toolbox like handybox.

What type of function I have ?

Provides APIs not found in native JavaScript, involving Object, Array, Number, String, Time, and common tools, as well as support for use in Node.js

How to own me ?

1、Download from npm

npm install -s @zinliao/handybox

2、Use in your code

let handybox = require('@zinliao/handybox');

3、Happy to use all APIs

Do I have documentation ?

Online: Github - handybox

zObject zArray zNumber zString zTime zTool zData
pickNeedKey deduplication currency upperFirst getMyTime debounce Queue
serialization pushAndShift midian strBoolToBool - dataType -
- max - strNumRangeToArray - - -
- min - - - - -
- removeSpecItem - - - - -
- in - - - - -

zObject

API Name Default Params optional(default) Chained call
pickNeedKey obj(Object)
keys(Array)
isKeepKey(false) x
serialization obj(Object) x x
  • pickNeedKey(obj, keys, isKeepKey)
let zObject = require('../zObject/index');

let obj1 = {
  a: 'a',
  b: 'b',
  c: 'c'
};

// { a: 'a', c: 'c' }
zObject.pickNeedKey(obj1, ['a', 'c']);

// { a: 'a' }
zObject.pickNeedKey(obj1, ['a', 'd']);

// { a: 'a', d: '' }
zObject.pickNeedKey(obj1, ['a', 'd'], true);
  • serialization(obj)
let zObject = require('../zObject/index');

let obj1 = {
  a: 'a',
  b: 'b',
  c: 'c'
};

// a=a&b=b&c=c
console.log(zObject.serialization(obj1));

zArray

API Name Default Params optional(default) Chained call
deduplication - keepEmpty(false)
pushAndShift item max(0)
max - - ×
min - - ×
removeSpecItem index(Number) item(Number|String)
in item(Any) isBackIndex(false) x
  • deduplication(keepEmpty)
let handybox = require('../index');

let a = [1,3,5,'',3,1];

// [1,3,5]
a.deduplication();
// [1,3,5,'']
a.deduplication(true);
  • pushAndShift(item, max)
let handybox = require('../index');

let a = [1];

// [1,2]
a.pushAndShift(2);
// [2,3]
a.pushAndShift(3, 2);
  • max & min
let handybox = require('../index');

let a = [5,7,3,9,1,11,0];

// 11
a.max();
// 0
a.min();
  • removeSpecItem(index, item)
let handybox = require('../index');

let a = [1, 2, 3],
    b = [1, 2, 3];

// [1, 3]
a.removeSpecItem(1);
// [1, 2]
a.removeSpecItem(null, 3);
  • in(item, isBackInde)
let handy = require('../index');

let a = [1, '2', 3];

// false
console.log(a.in(2));
// false
console.log(a.in(4));
// true
console.log(a.in('2'));
// 1
console.log(a.in('2', true));

zNumber

API Name Default Params optional(default) Chained call
currency - short(false)
fixed(2)
×
midian target(Number) fixed(-1) ×
  • currency(short, fixed)
let handybox = require('../index');

let _int1 = 123456,
    _int2 = 123456.789,
    _int3 = -12345,
    _int4 = -12345.789;

// 123,456
_int1.currency();
// 123.46k
_int1.currency(true);
// 123.5k
_int1.currency(true, 1);
// 123,456.789
_int2.currency();
// -123,456
_int3.currency();
// -123,456.789
_int4.currency();
  • midian(target)
let handybox = require('../index');

let start = 10, end = -5;

// 2.5
start.midian(end)
// 3
start.midian(end, 0)
// 0
start.midian('-5')

zString

API Name Default Params Optional Params(default) Chained call
upperFirst - - ×
strBoolToBool - - x
strNumRangeToArray - - x
  • upperFirst
let handybox = require('../index');

let str1 = 'hello world';

// Hello world
str1.upperFirst();
  • strBoolToBool
let handybox = require('../index');

let str2 = 'false';

// boolean
typeof str2.strBoolToBool();
  • strNumRangeToArray
let handybox = require('../index');

let str3 = '1,2,3-5';

// [ '1', '2', '3', '4', '5' ]
console.log(str3.strNumRangeToArray())

zTime

API Name Default Params Optional Params(default) Chained call
getMyTime - format(null)
timestamp(null)
area(EN)
×
  • getMyTime(format, timestamp, area)

format

Input Output
YYYY|yyyy|year|年 2018
MM|month|月 12
DD|date|日 25
HH|hour|时 09
mm|minute|分 10
ss|second|秒 50
ms|millisecond|毫秒 247
day EN: Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
CN: 日, 一, 二, 三, 四, 五, 六

area

Input Is Default
EN
CN ×
let zTime = require('../index')['zTime'];

let time1 = zTime.getMyTime('YYYY-MM-DD HH:mm:ss 星期day', null, 'CN');

// 2018-11-26 21:56:46 星期一
time1;

let time2 = zTime.getMyTime('YYYY-MM-DD HH:mm:ss 星期day', 1514736000000, 'CN');

// 2018-01-01 00:00:00 星期一
time2;

zTool

API Name Default Params Optional Params(default) Chained call
debounce func(Function)
delay(Number)
×
dataType data(Any) isWitchType(null) x
  • debounce(func, delay = 300)
let handybox = require('../index.js'),
    zTime = handybox.zTime,
    zTool = handybox.zTool;

// debounce
let count = 0, delay = 1000,
    debounceLog = zTool.debounce(log, delay);

function log() {
  let now = zTime.getMyTime('HH:mm:ss');

  console.log(`count:${count}`);
  console.log(`Time:${now}`);
}

function main() {
  count < 5 ? setTimeout(_ => {
    count++;
    debounceLog();
    main()
  }, 0) : console.log('====== Over ======');
}

console.log('====== Start ======');
log();
main();
<!-- all console log like this -->
====== Start ======
count:0
Time:2019-11-02 15:13:24
====== Over ======
count:5
Time:2019-11-02 15:13:25
  • dataType(data, isWhichType = null)
let handybox = require('../../index'),
    zTool = handybox.zTool;

console.log(zTool.dataType('String'));                  // String
console.log(zTool.dataType(123456789));                 // Number
console.log(zTool.dataType(false));                     // Boolean
console.log(zTool.dataType(undefined));                 // Undefined
console.log(zTool.dataType(null));                      // Null
console.log(zTool.dataType(BigInt(100000000000000)));   // BigInt
console.log(zTool.dataType(Symbol('SYMBOL')));          // Symbol
console.log(zTool.dataType({}));                        // Object
console.log(zTool.dataType(new Array(10)));             // Array
console.log(zTool.dataType(function(){}));              // Function

zData

Data Strutures Methods
Queue isEmpty()
first()
last()
length()
enqueue(el)
dequeue()
toString()
clear()
  • Queue
let handybox = require('../../index'),
    Queue = handybox.zData.Queue;

let queue = new Queue();

queue.enqueue(1);                   // [1]
queue.enqueue(2);                   // [1,2]
queue.enqueue(3);                   // [1,2,3]
queue.dequeue();                    // [2,3]
console.log(queue.isEmpty())        // false
console.log(queue.length())         // 2
console.log(queue.first())          // 2
queue.enqueue(4);                   // [2,3,4]
queue.enqueue(5);                   // [2,3,4,5]
queue.enqueue(6);                   // [2,3,4,5,6]
queue.dequeue();                    // [3,4,5,6]
console.log(queue.last())           // 6
queue.enqueue(7);                   // [3,4,5,6,7]
console.log(queue.toString());      // 3,4,5,6,7
queue.clear();                      // []
console.log(queue.toString(null));  // []