# bes-jstools
[![npm version](https://img.shields.io/npm/v/bes-jstools.svg?style=flat-square)](https://www.npmjs.org/package/bes-jstools)
[![npm build](https://travis-ci.org/BothEyes1993/bes-jstools.svg?branch=master)](https://travis-ci.org/BothEyes1993/bes-jstools)
[![npm downloads](https://img.shields.io/npm/dm/bes-jstools.svg?style=flat-square)](http://npm-stat.com/charts.html?package=bes-jstools)
[![gzip size: JS](http://img.badgesize.io/https://unpkg.com/bes-jstools/dist/bes-utils.min.js?compression=gzip&label=gzip%20size:%20JS)](https://unpkg.com/bes-jstools/dist/bes-utils.min.js?compression=gzip&label=gzip%20size:%20JS)
[![npm license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/BothEyes1993/bes-jstools/blob/master/LICENSE)
100多个基础常用JS函数和各种数据转换处理集合大全,此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合
## Browser Support
![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_7-8/internet-explorer_7-8_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png)
--- | --- | --- | --- | --- | --- |
7+ ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 6.1+ ✔ |
## Installing
```shell
npm install bes-jstools --save
```
Using nodejs
```javascript
const BesUtils = require('bes-jstools')
```
Get on [unpkg](https://unpkg.com/bes-jstools/dist/bes-utils.min.js)
```HTML
<script src="https://unpkg.com/bes-jstools/dist/bes-utils.min.js"></script>
```
### ES6 Module import
```javascript
import BesUtils from 'bes-jstools'
```
## API
* *基础函数*
* [isNaN (val) 判断是否非数值](#isnan-val-判断是否非数值)
* [isFinite (val) 判断是否为有限数值](#isfinite-val-判断是否为有限数值)
* [isUndefined (val) 判断 Undefined](#isundefined-val-判断-undefined)
* [isArray (val) 判断是否数组](#isarray-val-判断是否数组)
* [isFloat (val) 判断是否小数](#isfloat-val-判断是否小数)
* [isInteger (val) 判断是否整数](#isinteger-val-判断是否整数)
* [isBoolean (val) 判断是否 Boolean 对象](#isboolean-val-判断是否-boolean-对象)
* [isString (val) 判断是否 String 对象](#isstring-val-判断是否-string-对象)
* [isNumber (val) 判断是否 Number 对象](#isnumber-val-判断是否-number-对象)
* [isRegExp (val) 判断是否 RegExp 对象](#isregexp-val-判断是否-regexp-对象)
* [isObject (val) 判断是否 Object 对象](#isobject-val-判断是否-object-对象)
* [isPlainObject (val) 判断是否是一个对象](#isplainobject-val-判断是否是一个对象)
* [isDate (val) 判断是否 Date 对象](#isdate-val-判断是否-date-对象)
* [isError (val) 判断是否 Error 对象](#iserror-val-判断是否-error-对象)
* [isTypeError (val) 判断是否 TypeError 对象](#istypeerror-val-判断是否-typeerror-对象)
* [isEmpty (val) 判断是否为空,包括空对象、空数值、空字符串](#isempty-val-判断是否为空包括空对象空数值空字符串)
* [isNull (val) 判断是否为 Null](#isnull-val-判断是否为-null)
* [isSymbol (val) 判断是否 Symbol 对象](#issymbol-val-判断是否-symbol-对象)
* [isArguments (val) 判断是否 Arguments 对象](#isarguments-val-判断是否-arguments-对象)
* [isElement (val) 判断是否 Element 对象](#iselement-val-判断是否-element-对象)
* [isDocument (val) 判断是否 Document 对象](#isdocument-val-判断是否-document-对象)
* [isWindow (val) 判断是否 Window 对象](#iswindow-val-判断是否-window-对象)
* [isFormData (val) 判断是否 FormData 对象](#isformdata-val-判断是否-formdata-对象)
* [isMap (val) 判断是否 Map 对象](#ismap-val-判断是否-map-对象)
* [isWeakMap (val) 判断是否 WeakMap 对象](#isweakmap-val-判断是否-weakmap-对象)
* [isSet (val) 判断是否 Set 对象](#isset-val-判断是否-set-对象)
* [isWeakSet (val) 判断是否 WeakSet 对象](#isweakset-val-判断是否-weakset-对象)
* [isLeapYear (date) 判断是否闰年](#isleapyear-date-判断是否闰年)
* [isMatch (obj, source) 判断属性中的键和值是否包含在对象中](#ismatch-obj-source-判断属性中的键和值是否包含在对象中)
* [isEqual (obj1, obj2) 深度比较两个对象之间的值是否相等](#isequal-obj1-obj2-深度比较两个对象之间的值是否相等)
* [isEqualWith (obj1, obj2, func) 深度比较两个对象之间的值是否相等,使用自定义比较函数](#user-content-isequalwith-obj1-obj2-func-深度比较两个对象之间的值是否相等使用自定义比较函数)
* [isDateSame (date1, date2, format) 判断两个日期是否相同](#isdatesame-date1-date2-format-判断两个日期是否相同)
* *常用函数*
* [toNumber ( num ) 转数值](#tonumber--num--转数值)
* [toInteger ( num ) 转整数](#tointeger--num--转整数)
* [toFixedNumber ( num, digits ) 和 Number.toFixed 类似,区别就是不会对小数进行四舍五入,结果返回数值](#tofixednumber--num-digits--和-numbertofixed-类似区别就是不会对小数进行四舍五入结果返回数值)
* [toFixedString ( num, digits ) 和 Number.toFixed 类似,区别就是不会对小数进行四舍五入,结果返回字符串](#tofixedstring--num-digits--和-numbertofixed-类似区别就是不会对小数进行四舍五入结果返回字符串)
* [toArray ( array ) 将对象或者伪数组转为新数组](#toarrayfrom--array--将对象或者伪数组转为新数组)
* [toStringJSON (str) 字符串转 JSON](#tostringjson-str-字符串转-json)
* [toJSONString (obj) JSON 转字符串](#tojsonstring-obj-json-转字符串)
* [getType (obj) 获取对象类型](#gettype-obj-获取对象类型)
* [getSize ( obj ) 返回对象的长度](#getsize--obj--返回对象的长度)
* [uniqueId ( prefix ) 获取一个全局唯一标识](#uniqueid--prefix--获取一个全局唯一标识)
* [uniq ( array ) 数组去重](#uniq--array--数组去重)
* [union ( ...array ) 将多个数的值返回唯一的并集数组](#union--array--将多个数的值返回唯一的并集数组)
* [random ( min, max ) 获取一个指定范围内随机数](#random--min-max--获取一个指定范围内随机数)
* [range ( start, stop, step ) 序号列表生成函数](#range--start-stop-step--序号列表生成函数)
* [clear (obj[, defs, assigns]) 清空对象; defs如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)](#clear-obj-defs-assigns-清空对象-defs如果不传清空所有属性如果传对象清空并继承如果传值给所有赋值)
* [remove (obj, iteratee) 移除对象属性](#remove-obj-iteratee-移除对象属性)
* [assign (destination, ...sources) 浅拷贝一个或者多个对象到目标对象中,如果第一值是true,则使用深拷贝](#assignextend-destination-sources-浅拷贝一个或者多个对象到目标对象中如果第一值是true则使用深拷贝)
* [clone (obj, deep) 浅拷贝/深拷贝](#clone-obj-deep-浅拷贝深拷贝)
* [destructuring (obj, ...target) 将一个或者多个对象值解构到目标对象](#destructuring-obj-target-将一个或者多个对象值解构到目标对象)
* [trim ( str ) 去除字符串左右两边的空格](#trim--str--去除字符串左右两边的空格)
* [trimLeft ( str ) 去除字符串左边的空格](#trimleft--str--去除字符串左边的空格)
* [trimRight ( str ) 去除字符串右边的空格](#trimrig