克隆/下载
贡献代码
同步代码
C0127-cyq13 C0127 发布 3f518ea 11个月前
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

介绍

@ohos/e-utils工具库是基于typescript实现的一个常用库封装

安装

ohpm  install @ohos/e-utils

使用

Hooks

usePick

Pick选类似,但是usePick取指定一组属性值,返回一个新的属性值

const test = {
    book: '倚天屠龙记',
    name: '金庸',
    price: '18',
    likes: '999'
};
console.log(usePick(test, [])); // {}
console.log(usePick(test, ['name'])); // {name: '金庸'}

useSortByKey

根据某个数组值进行排序,如数据类型是object[]形式,可以通过key自定义需要的排序的键

options配置项

参数 类型 默认值 说明
order dec asc dec
key object的键
compareFn Funtion - 提供自定义比较函数

useMerge

useMerge 使用了递归的方式,可以深度合并多个对象,对于相同的键名,后面的对象会覆盖前面的对象。如果键对应的值是对象,则会递归合并其内部的键值对。

示例一

  const source = {
    name: '张三',
    gender: '女'
  };
  const source1 = {
    name: '张三',
    info: '信息'
  };
const mergeRes = useMerge(source, source1)
/**
{
      name: '张三',
      gender: '女',
      info: '信息'
    }
**/

示例二

  const source = {
          name: '张三',
          gender: '女',
          info: {
            name: '张强'
          }
        }
  const source1 = {
          name: '张4',
          info: {
            age: 18
          }
        }
  const mergeRes = useMerge({}, source,source1)
  /**
  {
      name: '张4',
      gender: '女',
      info: {
        name: '张强',
        age: 18
      }
    }
  **/

示例三

useMerge<number[]>([], [1, 2], [3, 4])) //[3, 4]

useMerge(
        {},
        {
          name: '张三',
          gender: '女'
        },
        {
          name: '张三',
          gender: '女'
        },
        {
          name: '张三',
          gender: '女',
          info: [520]
        }
      )
/**
      name: '张三',
      gender: '女',
      info: [520]
**/

useEmptyObject

useEmptyObject用于将对象值深度置空,会根据传入的对象值进行判断并赋予对应的空值。它接收两个参数datadefaultValue其中data是一个泛型,表示要清空的对象,defaultValue是一个部分类型* 它与data的类型一致,用于设置每个属性的初始值。在设置属性的初始值时,使用defaultValue对应字段的值来替换原有的属性值。最后,返回清空后的 data 对象.

示例一

  const data = {
    key: '8899797',
    nested: {
      ll: '123',
      deep: {
        nestedKey: 'nestedValue'
      }
    }
  };
useEmptyObject(data)
/**
{
    key: '',
    nested: {
      ll: '',
      deep: {
        nestedKey: ''
      }
    }
  }
**/

示例二

  const data = {
    key: '8899797',
    nested: {
      ll: '123',
      deep: {
        nestedKey: 'nestedValue'
      }
    }
  };
useEmptyObject(data, {
        nested: {
          deep: {
            nestedKey: '8888'
          }
        }
      })
/**
{
      key: '',
      nested: {
        ll: '',
        deep: {
          nestedKey: '8888'
        }
      }
    }
**/

useChunk

将数组数据进行分片,内部做了正无穷负无穷处理

useChunk(['a', 'b', 'c', 'd'], 0) // => []
useChunk(['a', 'b', 'c', 'd'], 2) // => [['a', 'b'], ['c', 'd']]
useChunk(['a', 'b', 'c', 'd'], 3) // => [['a', 'b', 'c'], ['d']]
useChunk(['a', 'b', 'c', 'd'], 3.5) // => [['a', 'b', 'c'], ['d']]
useChunk(['a', 'b', 'c', 'd'], 1 / 0) // => [['a'], ['b'], ['c'], ['d']]
useChunk(['a', 'b', 'c', 'd'], -1 / 0) // => []

useFormatDate

useFormatDate将时间进行格式化输出,支持时间戳、标准时间等。date参数为转换时间,format默认输出格式yyyy-MM-dd

  • 时间戳
console.log('时间戳', useFormatDate(1669290652000) ) // 2022-11-24
  • 时间
console.log('时间戳', useFormatDate(new Date()) ) // 2022-11-24
  • 指定格式
console.log('时间戳', useFormatDate(new Date(), 'yyyy-MM-dd HH:mm:ss') ) // 2022-11-24 19:50:52

useBeforeDate

useBeforeDate接收一个时间参数,与当前时间比较,计算早于当前时间差,接收两个参数,date比较的时间(必须),此外,还可以传入resDefault,设置默认返回值,默认返回空值,(如果晚于当前时间的返回值)

  • 早于当前时间
console.log(useBeforeDate('2021-11-25 19:50:52', '-')) // 1年前
console.log(useBeforeDate('2022-11-17 19:50:52', '-')) // 1周前
console.log(useBeforeDate('2022-11-25 19:50:52', '-')) // 54分钟前
  • 晚于当前时间
console.log(useBeforeDate('2022-11-27 19:50:52', '-')) // -

usePriceToThousand

usePriceToThousand金额千分位转换,参数price可以是数字或者字符串类型;参数decimals需要保留小数点 默认2;参数separator千分位符号 默认,;参数round true时保留位数向下取整,否则向上取整,默认为true

console.log(usePriceToThousand(3600)) // 3,600.00
console.log(usePriceToThousand(3600.2566)) // 3,600.25
console.log(usePriceToThousand(3600.2566,1,'-', false)) // 3-600.2
console.log(usePriceToThousand('9655544.58777',3,'-')) // 9-655-544.587

useFormatBytes

useFormatBytes将文件字节转换成 MB等格式

参数bytes可以是number类型;参数`decimals需要保留小数点 默认2

useEncryptedIdCard

useEncryptedIdCard身份证脱敏处理

console.log(useEncryptedIdCard("450616199905206666")) // 450616****6666
console.log(useEncryptedIdCard("3600.2566")) // Error: 3600.2566 is invalid idCard

useEncryptedPhone

desPhone手机号脱敏处理

console.log(useEncryptedPhone("19994402299")) // 199****2299
console.log(useEncryptedPhone("3600.2566")) // Error: 3600.2566 is invalid phone number

useCloneDeep

useCloneDeep实现数据拷贝,参数source拷贝的原数据内容

useCamelize

useCamelize短杆拼接转驼峰,test-icon => testIcon

useCamelizeToKebabCase

useCamelizeToKebabCase驼峰命名转短杆或者下划线命名,接收参数str命名字符串,mark支持传入-或者下划线进行拼接,默认为短杆-,userName => user-name

useFirstLetterToUpperCase

useFirstLetterToUpperCase首字母转大写

useFirstLetterToUpperCase

useFirstLetterToUpperCase首字母大写转小写

useToFixedFix

useToFixedFix处理小数点, 参数decimals保留的小数点位数,默认为2小数位

console.log(useToFixedFix("45588.28988, 3")) // 45588.289
console.log(useToFixedFix("45588.28988, 2")) // 45588.28
console.log(useToFixedFix("45588.28988, 1")) // 45588.2
console.log(useToFixedFix("45588.28988, 0")) // 45588
console.log(useToFixedFix("45588.28, 3")) // 45588.28

useTransformTree

useTransformTree数组数据转树形结构,useTransformTree具有两个参数,arrData是必须的数组数据,options参数是可选项,parent是可选的绑定父节点字段,默认为parentkey 默认是可选的每组数据的唯一标识字段,默认值为id(这两个字段是可以自定义的),pid字段是作为父节点时的值,默认为null

options参数

{
  parent: string;
  key: string;
  pid: string | number | null;
}

如果你的数据,没有像上面数据的id字段,此时,你需要传入pid参数设置成你的标识字段,同样的,如果你绑定的父节点字段不是parent,那么此时,你需要传入parent字段设置你的父节点字段

const arr = [{ parent: null, id: 1, name: '北京' },
{ parent: 1, id: 11, name: '朝阳' },
{ parent: 11, id: 111, name: '朝阳1号' },
{ parent: 1, id: 12, name: '海淀' },
{ parent: 12, id: 121, name: '海淀1号' },
{ parent: null, id: 2, name: '上海' },
{ parent: 2, id: 21, name: '浦东' },
{ parent: 21, id: 211, name: '浦东1号' },
{ parent: 2, id: 22, name: '虹口' },
{ parent: 22, id: 221, name: '虹口1号'}]

// 转换后
[
  {
    "parent": null,
    "id": 1,
    "name": "北京",
    "children": [
      {
        "parent": 1,
        "id": 11,
        "name": "朝阳",
        "children": [
          {
            "parent": 11,
            "id": 111,
            "name": "朝阳1号"
          }
        ]
      },
      {
        "parent": 1,
        "id": 12,
        "name": "海淀",
        "children": [
          {
            "parent": 12,
            "id": 121,
            "name": "海淀1号"
          }
        ]
      }
    ]
  },
  {
    "parent": null,
    "id": 2,
    "name": "上海",
    "children": [
      {
        "parent": 2,
        "id": 21,
        "name": "浦东",
        "children": [
          {
            "parent": 21,
            "id": 211,
            "name": "浦东1号"
          }
        ]
      },
      {
        "parent": 2,
        "id": 22,
        "name": "虹口",
        "children": [
          {
            "parent": 22,
            "id": 221,
            "name": "虹口1号"
          }
        ]
      }
    ]
  }
]

useTransformList

useTransformList树形结构数据进行扁平化,其中在每一组数据中,应该包含children字段,如果不是该字段,那么此时应该传入可选参数options进行替换

interface ITreeOptions {
  /**
   * 子节点的键 默认值【children】
   */
  children?: string;
  /**
   * 父节点ID的键 默认值【id】
   */
  pidKey?: string;
  /**
   * 设置父节点的属性值 默认值【null】
   */
  pidValue?: string | number | null;
  /**
   * 设置父节点键 默认值【parent】
   */
  parentKey?: string;
  /**
   * 是否需要设置父节点标志 默认值【true】
   */
  pidFlag?: boolean;
}

Is

isPhone

isPhone校验大陆手机号

console.log(isPhone("19994403399")) // true
console.log(isPhone("15448896666774")) // false

isIdCard

isIdCard接收一个字符串,判断是否是15或者18位身份证

console.log(isIdCard('450603199906273529')) // true
console.log(isIdCard('45060319990886273529')) // false

isObjectLike

返回当前是否是object类型

console.log(isObjectLike({})) // true
console.log(isObjectLike([1, 2, 3])) // true
console.log(isObjectLike(Function)) // false
console.log(isObjectLike(null)) // false

isNumber

用于检测值是否是number数值类型

console.log(isNumber('-12.22')) // false
console.log(isNumber(-12.22)) // true

isNumeric

用于检测值是否是数字数值类型,包含正数负数,可以说是isNumber增强版

console.log(isNumeric('1222')) // true
console.log(isNumeric('+1222')) // true
console.log(isNumeric('-1222')) // true
console.log(isNumeric('12.22')) // true
console.log(isNumeric('+12.22')) // true
console.log(isNumeric(+12.22)) // true
console.log(isNumeric('3.14e-10')) // true
console.log(isNumeric('abc')) // false
console.log(isNumeric('458.a')) // false
console.log(isNumeric('122e')) // false
MIT License Copyright (c) 2024 C0127 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于ets/ts开发的原生鸿蒙常用工具库,打造了一款完全基于ETS/TS的原生工具库。这款工具库独立性强,不依赖任何第三方库 展开 收起
TypeScript 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化