### JavaScript工具类库

从jQuery中整理的部分的工具函数以及平时积累的部分工具函数，方便开发使用

###测试
```
npm run test
```

### 如何使用

- 安装

  ```
  cnpm install heibao-utils --save-dev;
  ```

- 引用

  ```
  import Utils from "heibao-utils";

  Utils.xxx
  ```

  **备注：由于该包没有添加类型定义文件，并且是commonjs的方式，所以使用typescript的话，请使用require的方式进行引入**

### 提供了哪些方法

- type(obj)

  判断js对象类型，比如：object，array，string，function等

  ```js
  let type = Utils.type([]);
  console.log(type);//返回 array

  let type = Utils.type("hello");
  console.log(type);//返回 string

  ......
  ```

- isNull(obj)

  判断对象是否为null，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isPlainObject(obj)

  判断值是否为字面量对象，即 {}，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isEmptyObject(obj)

  判断是否是空对象，比如：[],{}等，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isFunction(obj)

  判断是否为function，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isNumeric(obj)

  判断是否为数字，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isArray(obj)

  判断是否为数组，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isBoolean(obj)

  判断是否为boolen，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- isDate(obj)

  判断是否为Date，返回boolean值

  **参数说明：**

  ```
  obj:要判断的值
  ```

- contain(ele,array,i)

  判断元素是否包含在数组中，存在反正元素在数组中的索引，不存在返回-1

  **参数说明：**

  ```
  ele:要比较的元素
  array:比较的数组
  i:比较arrary中哪个位置

  比如:
  let arr=[1,2,3];
  console.log(Utils.contain(2,arr));//返回 1
  console.log(Utils.contain(2,arr,1));//返回 1
  ```

- merge(first,second)

  数组合并，返回合并后的新数组

  **参数说明：**

  ```
  first:目标数组，即被合并的数组
  second:要合并的数组
  ```

- trim(text)

  去除字符串两端的空白，返回去除空白后的字符串

  **参数说明：**

  ```
  text:要出去空白的字符串
  ```

- makeArray(arr,results)

  合并数组或者对象，返回合并后的数组或者类数组对象

  **参数说明：**

  ```
  arr：数组或者对象
  results：数组或者对象
  ```

- unique(arr)

  数组去重，返回去重后的数组

  **参数说明：**

  ```
  返回去重后的数组
  ```

- findElementIndex(arr.element)

  查找数组中的元素，返回查找到的元素的索引

  **参数说明：**

  ```
  arr：被查询的数组
  element：要查询的元素
  ```

- removeElement(array, element)

  移除数组的元素，返回移除元素后的数组

  **参数说明：**

  ```
  array：要移除元素的数组
  element：要移除的元素
  ```

- copyDate(date)

  复制一个时间对象，返回复制后的时间对象Date

  **参数说明：**

  ```
  date:被复制的Date对象
  ```

- createCorrectDate(strFormatDate, dateArr)

  创建Date对象，返回创建成功的Date对象

  **参数说明：**

  ```
  strFormatDate:时间格式，支持的时间格式有如下几种：
  	2017-11-19 12:20:30:333
      2017/11/19 12:20:30:333
      2017.11.19 12:20:30:333
      2017-11-19
      2017/11/19
      2017.11.19
  dateArr：设置的时间格式数组，支持设置时、分、秒
  	[23,59,59]
  ```

- dateFormat(fmt, objDate)

  Date对象转换成时间字符串格式，返回转换后的时间字符串

  **参数说明：**

  ```
  fmt：格式化标识符
  	yyyy-MM-dd hh:mm:ss = 2017-01-01 21:32:32
  	yyyy-MM-dd          = 2017-01-01 21:32:32
  	yyyy年MM月dd日       = 2017年11月21日
  	
  	yyyy-MM             = 2017-01
  	yyyy-M              = 2017-1
  	MM-dd               = 01-01
  	M-d                 = 1-1
  	hh时                = 23时
  	hh                  = 23
  	
  	....
  	根据 y(年)、M(月)、d(日)、h(时)、m(分)、s(秒)、S(毫秒)、q(季度)这几个占位符的组合，可以返回任     何格式的Date对象的值
  objDate：Date时间对象
  ```

- isLeapYear(objDate)

  判断是否是闰年，返回boolean值

  **参数说明：**

  ```
  objDate：Date时间对象
  ```

- diffDate(interval, beginDate, endDate)

  比较两个时间的间隔，返回时间间隔

  **参数说明：**

  ```
  interval：时间间隔占位符
  	s：返回两个日期相差的秒数
      n：返回两个日期相差的分钟数
      h：返回两个日期相差的小时数
      d：返回两个日期相差的天数
      w：返回两个日期相差的周数
      m：返回连个日期相差的月数
      y：返回连个日期相差的年数
  beginDate：开始时间，可以是Date对象，也可以是时间字符串
  endDate：结束时间，可以是Date对象，也可以是时间字符串
  ```

- clone()

  对象拷贝

- getQuery(queryKey, target, pattern)

  查询querystring参数，返回查询到的值

  **参数说明：**

  ```
  queryKey：要查询的key
  target：从哪个目标字符串查询，可选参数，默认是window.location
  pattern：匹配的截取正则，可选参数

  一般前端只要传入第一个参数，就可以获取当前页面window.location的querystring的值
  ```

- getOffset(element)

  获取元素的offsetTop跟offsetLeft

  **参数说明：**

  ```
  element：dom元素
  ```

- getScrollOffsets(w)

  获取元素的滚动对象scrollX、scrollY

  **参数说明：**

  ```
  w:dom对象，默认为window

  我们一般也就是获取整个页面的scrollX、scrollY
  ```

- getViewPortSize(w)

  获取页面可见视口，返回width、height

  **参数说明：**

  ```
  w：dom对象，可选参数，默认window

  我们一般都是获取整个页面的可见视口
  ```

  ​

  ​

  ​

