@4a/helper

常用方法库

Usage no npm install needed!

<script type="module">
  import 4aHelper from 'https://cdn.skypack.dev/@4a/helper';
</script>

README

Helper

常用方法库

Usage

npm i @4a/helper
yarn add @4a/helper
import { ... } from '@4a/helper'

Assert

function ok(condition: any, message: string): void;
function not(condition: any, message: string): void;

Array

function asyncMap(arr: Promise<any>[], fn: ArrayPromiseCallback): Promise<any[]>;
function asyncFind(arr: Promise<any>[], fn: BoolPromiseCallback): Promise<any>;
function asyncFilter(arr: Promise<any>[], fn: BoolPromiseCallback): Promise<any[]>;
function asyncSome(arr: Promise<any>[], fn: BoolPromiseCallback): Promise<boolean>;
function asyncEvery(arr: Promise<any>[], fn: BoolPromiseCallback): Promise<boolean>;
/**
 * 从数组中删除一个元素
 * @param arr
 * @param val 值或回调函数
 * @returns 修改数组本身
 */
function remove(arr: any[], val: any | BoolCallback): any[];
/**
 * 从数组中删除一个元素
 * @param arr
 * @param val 值或回调函数
 * @returns 原始数组保持不变,返回新数组
 */
function removed(arr: any[], val: any | BoolCallback): any[];
/**
 * 数组去重,使用set特性,只对值数组生效
 * @param arr
 * @description Array.from(new Set(arr))
 */
function uniqued(arr: any[]): any[];
/**
 * 数组最大值
 * @param {number[] | any[]} arr
 * @param {CompareCallback} fn arr是number[]时fn为空,arr是any[]时fn必须
 */
function max(arr: number[]): number;
function max(arr: any[], fn: CompareCallback): any;
/**
 * 数组排序,支持自定义排序,默认排序规则:>
 * @param arr
 * @param rule 自定义排序规则
 */
function sorted(arr: any[], rule?: CompareInput): any[];

Date

const date: {
    /**
     * 日期格式化,日期+时间
     * @param date
     * @returns YYYY-MM-DD HH:mm:ss
     */
    format(date: MomentInput): string;
    /**
     * 日期格式化,仅日期没有时间
     * @param date
     * @returns YYYY-MM-DD
     */
    formatDate(date: MomentInput): string;
    /**
     * 今天的日期
     * @returns YYYY-MM-DD
     */
    today(): string;
    /**
     * 今天的日期
     * @returns Moment(YYYY-MM-DD)
     */
    todayStart(): moment.Moment;
    /**
     * 明天的日期
     * @returns Moment(YYYY-MM-DD).add(1, 'days')
     */
    todayEnd(): moment.Moment;
    /**
     * 日期向后偏移
     * @param date 日期
     * @param days 向后偏移天数,默认=1
     * @returns YYYY-MM-DD
     */
    afterDay(date: MomentInput, days?: number): string;
    isToday(date: MomentInput): boolean;
    /**
     *
     * @param amount 增加数量
     * @param unit 单位,默认 = 'days'
     * @returns YYYY-MM-DD HH:mm:ss
     */
    add(amount: DurationInputArg1, unit?: DurationInputArg2): string;
    /**
     * 连续时间区间
     * @param offset 区间天数
     * @param shift 漂移天数,向前推移的天数
     */
    offsetDays(offset: number, shift?: number): string[];
};

is

function isArray(obj: any): boolean;
function isPlainObject(obj: any): boolean;
function isString(obj: any): boolean;
function isFunction(obj: any): boolean;
function isEmptyObject(obj: any): boolean;

Lib

function http(baseURL: string): string;
function https(baseURL: string): string;
function random(min: number, max: number): number;
/**
 * 概率计算,基于Math.random的随机概率
 * @d 分子
 * @m 分母
 */
function ratio(d: number, m: number): boolean;
/**
 * @array
 * 支持数组,数组使用arr.slice(0)
 * @description
 * 深度clone,基于JSON.parse(JSON.stringify(obj)),不能拷贝循环引用的对象
 */
function clone<T>(obj: T): T;
/**
 * Array => Map
 * @param arr   数组
 * @param key   数组子对象的key
 * @param fn    处理key值的回调
 */
function toMap(arr: PlainObject[], key: string, fn?: ToMapCallback): PlainObject;
/**
 * Array => Map
 * @param arr
 * @param keys
 * @returns
 */
function makeMap(arr: PlainObject[], keys: string[]): PlainObject;
/**
 * Map => Array
 * @param map Map数据
 * @param fn  处理数据的回调
 * @example toArray({a:1}, (key, value) => key) ==> ['a']
 * @example toArray({a:1}, (key, value) => value) ==> [1]
 */
function toArray(map: PlainObject, fn: (key: string, value: any) => any): any[];
/**
 * 获取一个Map的key的数组
 * @param map Map对象
 * @param fn  对key的处理回调
 */
function getKeys(map: PlainObject, fn: (key: string) => string): string[];
/**
 * 获取一个Map的value的数组
 * @param map Map对象
 * @param fn  对value的处理回调
 */
function getValues(map: PlainObject, fn: (value: any) => any): any[];

Url

function urlParse(url: string): {
    protocol: string;
    port: string;
    host: string;
    username: string;
    password: string;
    pathname: string;
    query: import("url").URLSearchParams;
};