js常用轮子整理01
返回2个日期之间的所有日期数组
function getAllDates(start, end) { let dateList = []; const startTime = getDate(start); const endTime = getDate(end); while ((endTime.getTime() - startTime.getTime()) >= 0) { const year = startTime.getFullYear(); const month = startTime.getMonth() + 1 < 10 ? '0' + (startTime.getMonth() + 1) : startTime.getMonth() + 1; const day = startTime.getDate().toString().length == 1 ? "0" + startTime.getDate() : startTime.getDate(); dateList.push(year + "-" + month + "-" + day); startTime.setDate(startTime.getDate() + 1); } return dateList; } //字符串日期转标准时间格式 function getDate(datestr) { const temp = datestr.split("-"); const date = new Date(temp[0], temp[1] - 1, temp[2]); return date; } //调用 getAllDates('2022-08-21', '2022-09-08');
结果
判断给定的日期是否是周末
//判断日期是否为周末 function isWeekend(date) { var _date = new Date(date); var num = _date.getDay(_date), res = false; if ([0, 6].includes(num)) { res = true; } return res; }; //调用 isWeekend('2022-09-08');//false
同步延迟
const timeout = async (t) => { return new Promise((resolve) => { setTimeout(() => { resolve(); }, t) }) } //调用 async函数中 await timeout(1000) //延迟1秒
A数组的元素是否包含B数组的元素
function includes(a, b) { return b.every(val => a.includes(val)); } //调用 includes([1,2,3], [2,3]);//true
按key取value值,和按value取key值(相同的value取前一个key)
//按key取value function key_value(obj, str) { return obj[str] || str; } //按value取key function value_key(obj, str, compare = (a, b) => a === b) { return Object.keys(obj).find(k => compare(obj[k], str)) || str } //调用 const obj = { a: 1, b: 2, c: 3, } key_value(obj, a);//1 value_key(obj, 3);//c
防抖,多次触发时的指定时间内只执行1次
// 防抖 const debounce = (func, time) => { let timeout = null return function() { if (timeout) clearTimeout(timeout) timeout = setTimeout(() => { func.apply(this, arguments) }, time) } } //调用 知道时间内触发了多次,不会执行函数。指定时间后才会执行1次 document.body.onmousemove = debounce(() => { console.log(1) }, 3000)
二维数组转一维数组
// 多维数组转一维数组 const flatten = (arr) => { return arr.reduce((prev, next) => { return prev.concat(Array.isArray(next) ? flatten(next) : next) }, []) } //调用 arr = [[2, [3, 4]], 4] flatten(arr);//[2, 3, 4, 4]
file类型转base64字符串
// 文件转base64 function getBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); }); }
异步加载js文件
//异步加载js文件 function createScript(id, src) { const script = document.createElement('script') script.id = id script.src = src document.body.appendChild(script) } //调用 加载jquery createScript('jquery', 'https://libs.baidu.com/jquery/1.10.2/jquery.min.js')
数字转每3位数1个逗号,用于展示大数字,如金额
//数字转每三位一个逗号 function getNum(num) { return Number(num).toLocaleString() } //调用 getNum(32323432);//32,323,432
对象深拷贝
//对象深拷贝 function deepClone(source) { if (!source && typeof source !== 'object') { throw new Error('error arguments', 'deepClone') } const targetObj = source.constructor === Array ? [] : {} Object.keys(source).forEach(keys => { if (source[keys] && typeof source[keys] === 'object') { targetObj[keys] = deepClone(source[keys]) } else { targetObj[keys] = source[keys] } }) return targetObj } const arr1 = { a: { a: 1 }, b: 2, c() { } } const arr2 = deepClone(arr1) arr2.a.a = 2 arr2.c = () => { console.log('c') } console.log(arr1.a.a, arr2.a.a);//1 2 console.log(arr1.c, arr2.c);// (){} ()=>{console.log('c')}
json数据转formdata类型数据
//json转formdata类型 const formdataify = (params) => { const formData = new FormData(); Object.keys(params).forEach(key => { if (typeof params[key] == "string") { formData.append(key, params[key]); } else { formData.append(key, JSON.stringify(params[key])); } }); return formData; }; //调用 const fd = formdataify({ a: 1 }) console.log(fd.get('a')) //1
博客园作者:herry菌朋友,看到这里,关注作者的公众号吧,不漏掉更新哦
![]()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
2021-09-08 纯前端 读取本地txt文件并展示