- 目录
- JavaScript
- 格式化时间戳
- 时间格式化 几分钟前 几小时前
- url参数转为对象
- 对象序列化【对象转url参数】
- 本地存储
- cookie操作
- 数字格式化单位
- 数字千位过滤
- 过滤成版本号
- 首字母大写
- class骚操作
- 文本复制功能
- 判断是否是一个数组
- 判断是否是一个空数组
- 克隆一个数组
- 数组去重
- 是否为PC端
- 判断是否为微信
- 设备判断:android、ios、web
- 常见正则校验
- 去除字符串空格
- 过滤html代码
- 生成随机数范围
- 判断图片加载完成
- 光标所在位置插入字符
- 图片地址转base64
- base64图片下载功能
- 浏览器是否支持webP格式图片
- H5软键盘缩回、弹起回调
- 对象属性剔除
- 深拷贝
- 函数防抖
- 函数节流
- 🌟作者相关的文章、资源分享🌟
- 💫点击直接资料领取💫
目录
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(