JavaScript常用的工具函数,不全面大家补充哦

Posted 苏州程序大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript常用的工具函数,不全面大家补充哦相关的知识,希望对你有一定的参考价值。

目录

博主介绍

💂 个人主页:苏州程序大白

💂 个人社区:CSDN全国各地程序猿

🤟作者介绍:中国DBA联盟(ACDU)成员,CSDN全国各地程序猿(媛)聚集地管理员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年成立柒月软件工作室。

💬如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和C#、Halcon、python+opencv、VUE、各大公司面试等一些订阅专栏哦

🎗️ 承接软件APP、小程序、网站等开发重点行业应用开发(SaaS、PaaS、CRM、HCM、银行核心系统、监管报送平台、系统搭建、人工智能助理)、大数据平台开发、商业智能、App开发、ERP、云平台、智能终端、产品化解决方案。测试软件产品测试、应用软件测试、测试平台及产品、测试解决方案。运维数据库维护(SQL Server 、Oracle、mysql)、 操作系统维护(Windows、Linux、Unix等常用系统)、 服务器硬件设备维护、网络设备维护、 运维管理平台等。运营服务IT咨询 、IT服务、业务流程外包(BPO)、云/基础设施的管理、线上营销、数据采集与标注、内容管理和营销、设计服务、本地化、智能客服、大数据分析等。

💅 有任何问题欢迎私信,看到会及时回复

👤 微信号:stbsl6,微信公众号:苏州程序大白

🎯 想加入技术交流群的可以加我好友,群里会分享学习资料

JavaScript


JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中等等。

格式化时间戳

export function formatDateTimeStamp(date, fmt) 
    // 格式化时间戳 : formatDateTimeStamp(new Date(time),'yyyy-MM-dd hh:mm:ss')
    if (/(y+)/.test(fmt)) 
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    
    let o = 
        'M+': date.getMonth() + 1,
        'd+': date.getDate(),
        'h+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    
    for (let k in o) 
        if (new RegExp(`($k)`).test(fmt)) 
            let str = o[k] + ''
            fmt = fmt.replace(
                RegExp.$1, (RegExp.$1.length === 1) ?
                str :
                padLeftZero(str))
        
    
    return fmt


function padLeftZero(str) 
    return ('00' + str).substr(str.length);


export function parseTime(time, cFormat) 
    if (arguments.length === 0) 
        return null
    
    const format = cFormat || 'y-m-d h:i:s'
    let date
    if (typeof time === 'object') 
        date = time
     else 
        if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) 
            time = parseInt(time)
        
        if ((typeof time === 'number') && (time.toString().length === 10)) 
            time = time * 1000
        
        date = new Date(time)
    
    const formatObj = 
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
    
    const time_str = format.replace(/([ymdhisa])+/g, (result, key) => 
        const value = formatObj[key]
        // Note: getDay() returns 0 on Sunday
        if (key === 'a') 
            return ['日', '一', '二', '三', '四', '五', '六'][value]
        
        return value.toString().padStart(2, '0')
    )
    return time_str

时间格式化 几分钟前 几小时前

export function formatTime(time, option) 
    if (('' + time).length === 10) 
        time = parseInt(time) * 1000
     else 
        time = +time
    
    const d = new Date(time)
    const now = Date.now()
    const diff = (now - d) / 1000
    if (diff < 30) 
        return '刚刚'
     else if (diff < 3600) 
        // less 1 hour
        return Math.ceil(diff / 60) + '分钟前'
     else if (diff < 3600 * 24) 
        return Math.ceil(diff / 3600) + '小时前'
     else if (diff < 3600 * 24 * 2) 
        return '1天前'
    
    if (option) 
        return parseTime(time, option)
     else 
        return (
            d.getMonth() +
            1 +
            '月' +
            d.getDate() +
            '日' +
            d.getHours() +
            '时' +
            d.getMinutes() +
            '分'
        )
    


function pluralize(time, label) 
    if (time === 1) 
        return time + label + ' ago'
    
    return time + label + 's' + ' ago'

export function timeAgo(time) 
    const between = Date.now() / 1000 - Number(time)
    if (between < 3600) 
        return pluralize(~~(between / 60), ' minute')
     else if (between < 86400) 
        return pluralize(~~(between / 3600), ' hour')
     else 
        return pluralize(~~(between / 86400), ' day')
    

url参数转为对象

export function getQueryObject(url) 
    url = url == null ? window.location.href : url
    const search = url.substring(url.lastIndexOf('?') + 1)
    const obj = 
    const reg = /([^?&=]+)=([^?&=]*)/g
    search.replace(reg, (rs, $1, $2) => 
        const name = decodeURIComponent($1)
        let val = decodeURIComponent($2)
        val = String(val)
        obj[name] = val
        return rs
    )
    return obj


export function param2Obj(url) 
    const search = url.split('?')[1]
    if (!search) 
        return 
    
    return JSON.parse(
        '"' +
        decodeURIComponent(search)
        .replace(/"/g, '\\\\"')
        .replace(/&/g, '","')
        .replace(/=/g, '":"')
        .replace(/\\+/g, ' ') +
        '"'
    )

对象序列化【对象转url参数】

function cleanArray(actual) 
    const newArray = []
    for (let i = 0; i < actual.length; i++) 
        if (actual[i]) 
            newArray.push(actual[i])
        
    
    return newArray

export function param(obj) 
    if (!obj) return ''
    return cleanArray(
        Object.keys(obj).map(key => 
            if (obj[key] === undefined) return ''
            return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key])
        )
    ).join('&')

export function stringfyQueryStr(obj)  
    if (!obj) return '';
    let pairs = [];
    for (let key in obj) 
        let value = obj[key];
        if (value instanceof Array) 
            for (let i = 0; i < value.length; ++i) 
                pairs.push(encodeURIComponent(key + '[' + i + ']') + '=' + encodeURIComponent(value[i]));
            
            continue;`在这里插入代码片`
        
        pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
    
    return pairs.join('&');


param(name:'1111',sex:'wwww')
stringfyQueryStr(name:'1111',sex:'wwww')

本地存储

export const store =  // 本地存储
    set: function(name, value, day)  // 设置
        let d = new Date()
        let time = 0
        day = (typeof(day) === 'undefined' || !day) ? 1 : day // 时间,默认存储1天
        time = d.setHours(d.getHours() + (24 * day)) // 毫秒
        localStorage.setItem(name, JSON.stringify(
            data: value,
            time: time
        )) 
    ,
    get: function(name)  // 获取
        let data = localStorage.getItem(name)
        if (!data) 
            return null
        
        let obj = JSON.parse(data)
        if (new Date().getTime() > obj.time)  // 过期
            localStorage.removeItem(name)
            return null
         else 
            return obj.data
        
    ,
    clear: function(name)  // 清空
        if (name)  // 删除键为name的缓存
            localStorage.removeItem(name)
         else  // 清空全部
            localStorage.clear()
        
    

cookie操作

export const cookie =  // cookie操作【set,get,del】
    set: function(name, value, day) 
        let oDate = new Date()
        oDate.setDate(oDate.getDate() + (day || 30))
        document.cookie = name + '=' + value + ';expires=' + oDate + "; path=/;"
    ,
    get: function(name) 
        let str = document.cookie
        let arr = str.split('; ')
        for (let i = 0; i < arr.length; i++) 
            let newArr = arr[i].split('=')
            if (newArr[0] === name) 
                return newArr[1]
            
        
    ,
    del: function(name) 
        this.set(name, '', -1)
    

数字格式化单位

export function numberFormatter(num, digits) 

    const si = [
            value: 1E18,
            symbol: 'E'
        ,
        
            value: 1E15,
            symbol: 'P'
        ,
        
            value: 1E12,
            symbol: 'T'
        ,
        
            value: 1E9,
            symbol: 'G'
        ,
        
            value: 1E6,
            symbol: 'M'
        ,
        
            value: 1E3,
            symbol: 'k'
        
    ]
    for (let i = 0; i < si.length; i++) 
        if (num >= si[i].value) 
            return (num / si[i].value)以上是关于JavaScript常用的工具函数,不全面大家补充哦的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio开发工具常用快捷键。部分总结,不全面,只包含新手可能少用的

安卓开发常用工具类整理,楼主亲测可用贴(持续更新),如有补充欢迎跟帖

安卓开发常用工具类整理,楼主亲测可用贴(持续更新),如有补充欢迎跟帖

Java常用开发工具介绍

java常用开发工具介绍

关于JavaScript常用的工具函数汇总