JavaScript常用的工具函数

2022-06-27 13:06:23

目录

JavaScript

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

格式化时间戳

export functionformatDateTimeStamp(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(newRegExp(`(${k})`).test(fmt)){
            let str= o[k]+''
            fmt= fmt.replace(
                RegExp.$1,(RegExp.$1.length===1)?
                str:padLeftZero(str))}}return fmt}

functionpadLeftZero(str){return('00'+ str).substr(str.length);}

export functionparseTime(time, cFormat){if(arguments.length===0){return null}const format= cFormat||'{y}-{m}-{d} {h}:{i}:{s}'
    let dateif(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=newDate(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 Sundayif(key==='a'){return['日','一','二','三','四','五','六'][value]}return value.toString().padStart(2,'0')})return time_str}

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

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

functionpluralize(time, label){if(time===1){return time+ label+' ago'}return time+ label+'s'+' ago'}
export functiontimeAgo(time){const between= Date.now()/1000-Number(time)if(between<3600){returnpluralize(~~(between/60),' minute')}elseif(between<86400){returnpluralize(~~(between/3600),' hour')}else{returnpluralize(~~(between/86400),' day')}}

url参数转为对象

export functiongetQueryObject(url){
    url= url==null? window.location.href: urlconst 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]= valreturn rs})return obj}

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

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

functioncleanArray(actual){const newArray=[]for(let i=0; i< actual.length; i++){if(actual[i]){
            newArray.push(actual[i])}}return newArray}
export functionparam(obj){if(!obj)return''returncleanArray(
        Object.keys(obj).map(key=>{if(obj[key]=== undefined)return''returnencodeURIComponent(key)+'='+encodeURIComponent(obj[key])})).join('&')}
export functionstringfyQueryStr(obj){if(!obj)return'';let pairs=[];for(let keyin obj){letvalue= 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'})

本地存储

exportconst store={// 本地存储set:function(name,value, day){// 设置let d=newDate()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){returnnull}let obj= JSON.parse(data)if(newDate().getTime()> obj.time){// 过期
            localStorage.removeItem(name)returnnull}else{return obj.data}},
    clear:function(name){// 清空if(name){// 删除键为name的缓存
            localStorage.removeItem(name)}else{// 清空全部
            localStorage.clear()}}}

cookie操作

exportconst cookie={// cookie操作【set,get,del】set:function(name,value, day){let oDate=newDate()
        oDate.setDate(oDate.getDate()+(day||30))
        document.cookie= name+'='+value+';expires='+ oDate+"; path=/;"},get:function(name){let str= document.cookielet 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 functionnumberFormatter(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).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,'$1')+ si[i].symbol}}return num.toString()}

数字千位过滤

export functiontoThousandFilter(num){let targetNum=(num||0).toString()if(targetNum.includes(
  • 作者:苏州程序大白
  • 原文链接:https://blog.csdn.net/weixin_46931877/article/details/121927041
    更新时间:2022-06-27 13:06:23