博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端开发实用工具类函数
阅读量:6612 次
发布时间:2019-06-24

本文共 3425 字,大约阅读时间需要 11 分钟。

抽空整理了一下日常开发中会经常用到的工具函数

检测是否是数组

export default const judgeArr=(arr)=>{    if(Array.isArray(arr)){        return true;    }}

数组的”短路运算”every和some

情况一:全部满足 export const allTrueArr=(arrs)=>{  return arr.every((arr)=>{     return arr>20;//如果数组的每一项都满足则返回true,如果有一项不满足返回false,终止遍历  })  } 情况二:有一个满足export default const OneTrueArr=(arrs)=>{  return arr.some((arr)=>{     return arr>20;//如果数组有一项满足则返回true,终止遍历,每一项都不满足则返回false  })  }

获取当前的时间yyyy-MM-dd HH:mm:ss(没有满10就补0)

export default const obtainDate=()=>{  let date = new Date();  let year = date.getFullYear();  let month = date.getMonth() + 1;  let day=date.getDate();  let hours=date.getHours();  let minu=date.getMinutes();  let second=date.getSeconds();  //判断是否满10  let arr=[month,day,hours,minu,second];  arr.forEach(item=>{    item< 10?"0"+item:item;  })  return year+'-'+arr[0]+'-'+arr[1]+' '+arr[2]+':'+arr[3]+':'+arr[4]      }

函数防抖(debounce)和节流(throttle)

Debounce原理:通过重复调用函数,清空定时器,在函数不再被调用的时候触发一次function debounce(method,delay){    var timer = null;    return function(){        vat _that = this;        var args = arguments;        clearTimeout(timer);        timer = setTimeout(function(){            method.apply(_that,args);        },delay)    }}Throttle原理:通过判断时间间隔、间隔一定的时间频率调用函数function throttle(fn,delay,duration){    // fn 待执行函数 / delay 定时器延时时间 / duration 间隔时间    var timer = null;    var begin = +new Date();    return function(){        var _that = this;        var now = +new Date();        clearTimeout(timer);        if(duration){            if(now - begin >= duration){                fn.apply(_that,arguments);                begin = now;            }        } else {            timer = setTimeout(fn,delay);        }    }}

setTimeout(f, 0)

setTimeout的作用是将代码推迟到指定时间执行,如果指定时间为0,即setTimeout(f, 0),那么会立刻执行吗?

答案是不会。因为必须要等到当前脚本的同步任务,全部处理完以后,才会执行setTimeout指定的回调函数f。也就是说,setTimeout(f, 0)会

在下一轮事件循环一开始就执行。

setTimeout(function () {  console.log(1);}, 0);console.log(2);// 2// 1

上面代码先输出2,再输出1。因为2是同步任务,在本轮事件循环执行,而1是下一轮事件循环执行。

总之,setTimeout(f, 0)这种写法的目的是,尽可能早地执行f(放在异步任务队列的前面优先执行),但是并不能保证立刻就执行f。

获取url参数(QueryString)

正则法:function getQueryString (name) {    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)','i');    var r = window.location.search.substr(1).match(reg);    if (r != null) {        return unescape(r[2]);    }    return null;}//调用getQueryString ("参数名");        ORvar getParam = function (name) {    var search = document.location.search;    //alert(search);    var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");    var matcher = pattern.exec(search);    var items = null;    if (null != matcher) {        try {            items = decodeURIComponent(decodeURIComponent(matcher[1]));        } catch (e) {            try {                items = decodeURIComponent(matcher[1]);            } catch (e) {                items = matcher[1];            }        }    }    return items;};split拆分法:function GetRequest() {    var url = location.search; //获取url中"?"符后的字串    var theRequest = new Object();    if (url.indexOf("?") != -1) {        var str = url.substr(1);        strs = str.split("&");        for(var i = 0; i < strs.length; i ++) {            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);        }    }    return theRequest;}var Request = new Object();Request = GetRequest();// 调用// var 参数1,参数2,参数3,参数N;// 参数1 = Request['参数1'];// 参数2 = Request['参数2'];// 参数3 = Request['参数3'];// 参数N = Request['参数N'];

后续会有更多实用工具函数。。。。。

转载地址:http://hraso.baihongyu.com/

你可能感兴趣的文章
Microsoft将在VS 2017中提供“实时单元测试”特性
查看>>
印度有望挤下日本 成2017年全球第三大光伏市场
查看>>
自动化测试如何解决验证码的问题
查看>>
大数据让景区更智慧
查看>>
希腊央行网站成黑客“盘中餐”:上了头条才猛醒
查看>>
储能式UPS在数据中心的应用探讨
查看>>
最新EMC全球调查凸显网络威胁影响
查看>>
如何用Tensorflow实现RNN?本文将带你进一步研究
查看>>
想去英国 因为他们是移动连接速度之王
查看>>
微信企业版曝光 移动办公协同市场怎么走?
查看>>
C#日期格式化
查看>>
被企业微信吓到了吗?离做到极致还早
查看>>
机器学习如何威胁企业安全
查看>>
以测试用例为核心的软件测试
查看>>
浙江湖州出台光伏补贴新政 5年建设10万户家庭屋顶光伏
查看>>
五种机房动力环境监控系统的优缺点
查看>>
大数据企业要发展不能仅仅靠秀“肌肉”
查看>>
聊聊Oracle外键约束的几个操作选项
查看>>
人脸支付有漏洞?支付宝:不是所有用户都能用
查看>>
《请君入瓮——APT攻防指南之兵不厌诈》—第8章8.节工具及战术
查看>>