npm.io
1.0.4 • Published 3 years ago

hsw-tools

Licence
ISC
Version
1.0.4
Deps
3
Size
97 kB
Vulns
0
Weekly
0

工具包

介绍

汇总可能会用到的辅助函数之类 类似:lodash

简单使用

/* 
导出timejs单独模块
import {timejs} from 'hsw-tools'; 

导出默认,所有方法都会在defaultName中
import defaultName from 'hsw-tools';
*/ 

// 例如:调用timejs模块的backStartToEndDayPlus方法计算起止日期范围内天数和
import {timejs} from 'hsw-tools'; 
timejs.backStartToEndDayPlus('2023-01-01','2052-01-01') // 10585

// 例如:一些判断当前宿主浏览器环境的, 假设判断当前是否处于微信内置浏览器内,可以使用:isWxInBrowser 方法进行判断
import hswTools from 'hsw-tools'
console.log(hswTools.browser.isWxInBrowser()) //true | false

//像一些用到的实用库 也会默认导出的 例如:dayjs | lodash 目前也仅仅导出这两个库  
导出模块
timejs
方法 介绍 参数 返回值
dayjs Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。详见 null null
backStartToEndDay 计算给定时间内的天数;
==注:该函数无法跨年计算==
详见示例 Number
backStartToEndDayPlus backStartToEndDay的升级版,功能一样,==增加跨年计算==
仅计算当前年度的话需要将第三个参数传入true,默认为false,跨年可忽略
详见示例 Number
backTimeAreaDay 获取给定时间范围内的每一天的信息 详见示例 Array
backWeek 根据年返回周 并且返回每周的起点-终点 详见示例 Array
backNowWeek 返回给定时间所在年的第几周 详见示例 Array
backNowQuarter 返回给定时间所在年的第几周 详见示例 String

backStartToEndDay

import {timejs} from 'hsw-tools';
const {backStartToEndDay} = timejs
/**
 *
 * @param sTime 开始时间
 * @param endTime 结束时间 
 * @param toDay 是否将当天也计算在内
 * @returns number 给定时间之间的天数 (默认返回当前年开始到当前的时间之间的天数)
 */
 //当时间 2023-08-28
 backStartToEndDay() // 239 
 backStartToEndDay('2023-01-01','2023-12-31',true) // 365
 backStartToEndDay('2023-01-01','2023-12-31',false) // 364

backStartToEndDayPlus

import {timejs} from 'hsw-tools';
/**
 * backStartToEndDay升级版本 增加夸年,其他特性和用法一致
 * @param sTime 开始时间
 * @param endTime 结束时间 
 * @param toDay 是否将当天也计算在内
 * @returns number 给定时间之间的天数 (默认返回当前年开始到当前的时间之间的天数)
 * 注意:如果是计算一整年的,且是本年度的切记需要设置today = true ,不然31号是不会计算进去的,跨年计算可忽略
 */
 const {backStartToEndDayPlus} = timejs
 backStartToEndDayPlus('2023-01-01','2052-12-31') // 364 
 backStartToEndDayPlus('2023-01-01','2052-01-01') // 10585

backTimeAreaDay

 import {timejs} from 'hsw-tools';
 const {backTimeAreaDay} = timejs
/**
 *  返回给定时间段内的时间信息包括起始和结束时间 (时间戳对比的时候需要注意当前数据时间戳是该日期8点算起的,数据日补零需要)
 * @param s 起始时间
 * @param e 结束时间
 * @returns array
 */

  /*
    [
        {
            formatTime: "2023-01-01"
            time: 1672531200000
        },
        {
            formatTime: "2023-01-02"
            time: 1672617600000 
        }
    ]
  */
 backTimeAreaDay('2023-01-01','2023-01-02')

backWeek

 import {timejs} from 'hsw-tools';
 const {backWeek} = timejs
 /**
 * 根据年返回周 并且返回每周的起点-终点
 * @param year 
 * @param format 日期格式化 仅限年月日 例如:YYYY-M-D | YYYY-MM-MM | MM/YYYY/DD | YYYY年MM月DD日
 */
 backWeek('2023')
 /*
    id:2, 
    label:'第2周', //处于年中第几周
    oneDayList:[
        {formatTime: '2022-01-03', time: 164116800000 }
        ....
        {formatTime: '2022-01-09', time: 1641686400000}
    ],
    value:['2022-01-03', '2022-01-09'] //周起止点
 */

backNowWeek

 import {timejs} from 'hsw-tools';
 const {backNowWeek} = timejs
 /**
 * 返回给定时间所在年的第几周
 * @param date 时间
 * @param backType 返回数据类型 1返回周的下标 2返回当前日期的一周数据
 */
 backNowWeek('2023-08-28','1') // 36

 backNowWeek('2023-08-28','2')
 /*
    [
        {formatTime: '2023-08-28', time: 1693180800000}
        ....
        {formatTime: '2023-09-03', time: 1693699200000}
    ]
  */

backNowQuarter

 import {timejs} from 'hsw-tools';
 const {backNowWeek} = timejs
 /**
 * 返回给定时间所在季度
 * @param date 时间
 * @param toChineseNumerals 是否转为中文大写数字
 * @returns String | Number
 */

 backNowQuarter('2023-08-28') // 3
 backNowQuarter('2023-08-28',true) //三
arrayjs
方法 介绍 参数 返回值
treeFlat 树结构数组打平为一维数组 详见示例 Array
filterSame 数组对象去重 详见示例 Array

treeFlat

 import {arrayjs} from 'hsw-tools'
 const {treeFlat} = arrayjs
/**
 * @param arr 需要打平的树结构数组
 * @param field 需要拆解的字段
 * @param parentName 能都代表父元素的字段(会被注入到新的打平的子元素中去)
 * @returns []
 */
const origin = [
    {
        children:[
            {
                name:'张小三',
                age:40,
                children:[
                    {
                      name:'张小小三',
                      age:18,
                    }
                ]
            }
        ],
        name:'张三',
        age:70
    }
]
 treeFlat(orignData,'children') // [{name:'张三',age:70},{name:'张小三',age:40}....]

filterSame

import {arrayjs} from 'hsw-tools'
 const {filterSame} = arrayjs
/**
 * 数组对象去重 (并不是全等去重,而是对比某字段)
 * @param filterField  作为筛选条件的key
 * @param arr 被筛选的数组
 * @returns array
 */
 const origin = [
    {
        age:40,
        name:'张三'
    },
    {
        age:70,
        name:'李四'
    },
    {
         age:40,
        name:'张三'
    }
 ]
 filterSame('age',origin) //[{age:70,name:'李四'},{age:40,name:'张三'}]
lodash

详见官方文档

mapBaidu (基于已申请key并正确引入项目-百度地图文档)
方法 介绍 参数 返回值
getLocation 定位服务,基于百度地图 null Object

getLocation

 import {mapBaidu} from 'hsw-tools'
 const {getLocation} = mapBaidu
 //需要授权 分为浏览器定位和IP定位 默认浏览器定位-失败(成功直接返回结果)-启用ip定位-成功/失败-返回结果
 getLocation()

/*
    lng: 117.5, //经度
    lat: 27.5, // 维度
    origin: {}, //源数据 地址信息可从源数据中获取
    locationOrigin: 'IP' //定位数据来源 IP / LOCATION
 */
mapGaode (基于已申请key并正确引入项目-高德地图文档)
方法 介绍 参数 返回值
areaCenter 计算多个经纬度点的中心点,基于高德地图 详见示例 AMapBounds

areaCenter

 import {mapGaode} from 'hsw-tools'
 const {areaCenter} = mapGaode
/**
 * 
 * @param {*} lns 经度合集
 * @param {*} las 纬度合集
 * @param {*} map 地图实例 传入此参数之后调用areaCenter方法完成时会自动将中心点调整到所传经纬度构成的矩形中心点
 * @return bounds 详情见高德地图  AMap.Bounds 类
 */
 const bounds = areaCenter([112.5654,118.2366.....],[21.564556,32.566....],map)

browser
方法 介绍 参数 返回值
porm 判断设备当前客户端 PC/Mobile null Mobile / PC
aori 判断用户当前设备是Android还是IOS null Android / IOS
browserKernel 判断浏览器内核名称 null MozillaFirefox / Opera / MicrosoftInternetExplorer / MicrosoftEdge / GoogleChromeorChromium / AppleSafari / unknown
isPad 判断是否是pad null Boolen
isWxInBrowser 判断当前是否是微信内置浏览器 null Boolen
isSafari 判断是否为苹果的Safari浏览器 null Boolen
isIE 是否是IE null Boolen
isIE8under 是否是ie8以下版本 null Boolen
testjs
方法 介绍 参数 返回值
isemail 验证电子邮箱格式 null Boolen
ismobile 验证手机格式 value Boolen
isurl 验证URL格式 value Boolen
isdate 验证日期格式 value Boolen
isdateISO 验证ISO类型的日期格式 value Boolen
isnumber 验证十进制数字 value Boolen
isstring 验证字符串 value Boolen
isdigits 验证整数 value Boolen
isidCard 验证身份证号码 value Boolen
iscarNo 是否车牌号 value Boolen
isamount 金额,只允许2位小数 value Boolen
ischinese 是否中文字符 value Boolen
isletter 是否纯字母 value Boolen
isenOrNum 只能是字母或者数字 value Boolen
iscontains 验证是否包含某个值 value,param Boolen
isrange 验证一个值范围[min, max] value,param Boolen
israngeLength 验证一个长度范围[min, max] value,param Boolen
islandline 是否固定电话 value Boolen
isempty 判断是否为空 value Boolen
isjsonString 是否json字符串 value Boolen
isarray 是否数组 value Boolen
isobject 是否对象 value Boolen
ismsgcode 是否短信验证码 value,len = 6 Boolen
isfunc 是否函数方法 value Boolen
ispromise 是否promise对象 value Boolen
isimage 是否图片格式 value Boolen
isvideo 是否视频格式 value Boolen
isregExp 是否为正则对象 value Boolen

Keywords