# 简介

自家前端交流构建的JS工具库，内含丰富的常用的JS函数

# 安装

```
npm i own-js@latest
```

# 使用

```
import {combineDistinct} from 'own-js'
const res = combineDistinct([ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 2, 5 ])
// [ 1, 2, 3, 4, 5 ]
```

# Api

## 数组

### combineDistinct

> 数组去重

- 参数：若干个数组
- 返回值：去重后的数组

> 示例

```js
const res = combineDistinct([ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 2, 5 ])
// [ 1, 2, 3, 4, 5 ]
```

### arrayDistinct

> 去重数组-对象数组，根据对象的某个字段进行去重

- source 原始数组
- property 根据该属性去重

> 示例
```js
// 用法如下
const datas = [
  {
    name: "liu",
    type: "1"
  },
  {
    name: "wang",
    type: "2"
  },
  {
    name: "wang",
    type: "1"
  }
]
console.log(arrayDistinct(datas,'name'))
```
### sortBy

> 排序数组-对数组某个对象按照某个字段来排序

- property 排序字段
- isAsc 排序方式,默认升序

> 示例

```js
let arr1 = [
  { count: 1, name: '小米' },
  { count: 3, name: '华为' },
  { count: 2, name: '苹果' }
]
// sort() 方法用原地算法对数组的元素进行排序，并返回数组。
const res = arr1.sort(sortBy('count', false))
// 结果
// [
//     {
//         "count": 3,
//         "name": "华为"
//     },
//     {
//         "count": 2,
//         "name": "苹果"
//     },
//     {
//         "count": 1,
//         "name": "小米"
//     }
// ]
```

### groupBy

> 数组分组-对数组对象进行分组

- source 原始数组
- property 分组属性

> 示例

```
let people = [
  { name: 'Alice', age: 21 },
  { name: 'Max', age: 20 },
  { name: 'Jane', age: 20 }
]
let groupedPeople = groupBy(people, 'age')
// 结果
// {
//   20: [
//     { name: 'Max', age: 20 },
//     { name: 'Jane', age: 20 }
//   ],
//   21: [{ name: 'Alice', age: 21 }]
// }
```

### filterBy

> 过滤数组（支持递归过滤）

- source 原始数组
- filters 过滤条件（数组）
- property 根据该属性过滤
- children 子节点属性名，无子节点不用传或者传空

> 示例

```js
const menus1 = [
  {
    title: '添加1级',
    permission: 'add',
    children: [
      {
        title: '添加2级',
        permission: 'add1-2',
        children: [
          {
            title: '添加3级',
            permission: 'add1-3'
          },
          {
            title: '添加2-3',
            permission: 'add2-3'
          }
        ]
      },
      {
        title: '添加2-2',
        permission: 'add2-2'
      }
    ]
  }, {
    title: '修改',
    permission: 'edit'
  }, {
    title: '删除',
    permission: 'delete'
  }, {
    title: '查询',
    permission: 'query'
  }
]
const myPermissions1 = [ 'add', 'query', 'add1-2', 'add1-3' ]
const p1 = filterBy(menus1, myPermissions1, 'permission', 'children')
// 结果  
//   [
//     {
//       "title": "添加1级",
//       "permission": "add",
//       "children": [
//         {
//           "title": "添加2级",
//           "permission": "add1-2",
//           "children": [
//             {
//               "title": "添加3级",
//               "permission": "add1-3"
//             }
//           ]
//         }
//       ]
//     },
//     {
//       "title": "查询",
//       "permission": "query"
//     }
//   ]
```

## 校验
### validateIdCard
> 身份证号校验

- idcard 身份证号
- 验证成功返回空字符串，验证失败返回错误消息
> 示例
```js
validateIdCard('110110198801011234')
```
## 事件
