IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> js&ts 常用工具函数 -> 正文阅读

[JavaScript知识库]js&ts 常用工具函数

JavaScript & TypeScript

常用工具函数 (Utils)

  • RGB转换
export const rgbToHex: (r: number, g: number, b: number) => string =
    (r, g, b) => "#" + (1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1);

export const hexToRGB: (hex: string) => [number, number, number] = hex => {
    const res = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return res ? res.slice(1).map(s => parseInt(s, 16)) as [number, number, number] : [0, 0, 0];
}
  • 集合操作
export const union: <T>(a: T[], b: T[]) => T[] = (a, b) => [...a, ...b.filter(v => !a.includes(v))];
export const intersection: <T>(a: T[], b: T[]) => T[] = (a, b) => a.filter(v => b.includes(v));
export const diff: <T>(a: T[], b: T[]) => T[] = (a, b) => [...a, ...b].filter(v => !a.includes(v) || !b.includes(v));
  • 数组
export const shuffle: <T>(a: T[]) => T[] = a => {
    const ans = [];
    while (a.length > 0) {
        const random = Math.floor(Math.random() * a.length);
        ans.push(a[random]);
        a.splice(random, 1);
    }
    return ans;
}

export const set: <T>(a: T[]) => T[] = a => [...new Set(a)];

export const max: (a: number[]) => number = a => Math.max(...a);
export const min: (a: number[]) => number = a => Math.min(...a);
export const max_min: (a: number[]) => [number, number] = a => 
    a.reduce((pre, v) => [pre[0], pre[1]] = [Math.max(pre[0], v), Math.min(pre[1], v)], [a[0], a[0]]);

export const countOf: <T>(a: T[], v: T) => number = (a, v) => a.reduce((count, val) => count + (val === v ? 1 : 0), 0);

export const head: <T>(a: T[]) => T = a => a[0];
export const tail: <T>(a: T[]) => T = a => a[a.length - 1];
  • 校验

邮箱验证最好方式是与邮箱进行邮件验证!正则验证最好只用于用户书写错误提醒

export const validateEmail: (s: string) => boolean = s => /\S+@\S+/.test(s);

手机号验证最好方式为发送严重码!正则验证最好只用于用户书写错误提醒

export const validatePhone: (s: string) => boolean = s => /^1[0-9]{10}$/.test(s);

验证只包含数字

export function onlyNum(str: string): boolean {
    return /^\d+$/.test(str);
}

验证只包含字母,数字和基本汉字

export function onlyLettersAndNumAndChinese(str: string): boolean {
    return /^[a-zA-Z0-9\u4e00-\u9fa5]+$/u.test(str);
}

汉字占两位,字母占一位(默认传入字符串只包含字母和汉字)

export function worldCount(str: string): number {
    let count = 0;
    for (const s of str) {
        count += s.codePointAt(0)! < 255 ? 1 : 2;
    }
    return count;
}
  • 其它
export const digitize: (n: number) => number[] = n => [...n.toString()].map(i => parseInt(i));
export const random: (min: number, max: number) => number = (min, max) => Math.floor(min + Math.random() * (max - min));

同Python range

export function* range(start: number, stop?: number, step: number = 1) {
    if (step === 0) {
        throw new Error('ValueError');
    }
    let last: number = stop ?? 0;
    if (stop === undefined) {
        last = start;
        start = 0;
    }
    const compare = step > 0 ? ((i: number) => i < last) : ((i: number) => i > last);
    for (let i = start; compare(i); i += step) {
        yield i;
    }
}

同 C# string format

export function format(str: string, ...args: any[]): string {
    args.forEach((arg, index) => {
        const re = new RegExp(`\\{\\s*${index}\\s*\\}`, 'g');
        str = str.replace(re, arg?.toString());
    });
    return str;
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:41:41  更:2021-10-15 11:42:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 13:14:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码