JavaScript常用的工具函数,不全面大家补充哦
Posted 苏州程序大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript常用的工具函数,不全面大家补充哦相关的知识,希望对你有一定的参考价值。
javascript常用的工具函数,不全面大家补充哦
- 目录
- 博主介绍
- JavaScript
- 格式化时间戳
- 时间格式化 几分钟前 几小时前
- url参数转为对象
- 对象序列化【对象转url参数】
- 本地存储
- cookie操作
- 数字格式化单位
- 数字千位过滤
- 过滤成版本号
- 首字母大写
- class骚操作
- 文本复制功能
- 判断是否是一个数组
- 判断是否是一个空数组
- 克隆一个数组
- 数组去重
- 是否为PC端
- 判断是否为微信
- 设备判断:android、ios、web
- 常见正则校验
- 去除字符串空格
- 过滤html代码
- 生成随机数范围
- 判断图片加载完成
- 光标所在位置插入字符
- 图片地址转base64
- base64图片下载功能
- 浏览器是否支持webP格式图片
- H5软键盘缩回、弹起回调
- 对象属性剔除
- 深拷贝
- 函数防抖
- 函数节流
- 🌟作者相关的文章、资源分享🌟
- 💫点击直接资料领取💫
目录
博主介绍
💂 个人主页:苏州程序大白
💂 个人社区: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开发工具常用快捷键。部分总结,不全面,只包含新手可能少用的
安卓开发常用工具类整理,楼主亲测可用贴(持续更新),如有补充欢迎跟帖