Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

这是一些javascript的常用小轮子

#js 数组去重的最优方法 利用ES6的set

Set数据结构,它类似于数组,其成员的值都是唯一的。

利用Array.from将Set结构转换成数组

functiondedupe(array){returnArray.from(newSet(array));}dedupe([1,1,2,3])//[1,2,3]

拓展运算符(...)内部使用for...of循环

letarr=[1,2,3,3];letresultarr=[...newSet(arr)];console.log(resultarr);//[1,2,3]

#时间相关的一些方法

/**

  • 计算时间差
  • @param star 必须是时间戳
  • @param diff 时间相差天数
  • @returns {*} 日期字符串 */
// console.log(timeDifference(new Date(), -20))functiontimeDifference(star,diff){//star必须是时间戳//diff时间相差天数varstarTime=star;if(star.length==10){starTime=star*1000;}varnow=newDate(starTime);//当前日期now.setDate(now.getDate()+diff);returnformatDate(now);//格式化时间functionformatDate(date){varmyyear=date.getFullYear();varmymonth=date.getMonth()+1;varmyweekday=date.getDate();if(mymonth<10){mymonth="0"+mymonth;}if(myweekday<10){myweekday="0"+myweekday;}return(myyear+"-"+mymonth+"-"+myweekday);}}

/**

  • 按照指定格式将日期转换成字符串
  • @param format 日期格式
  • @returns {*} 日期字符串 */
Date.prototype.format=function(format){varo={"M+": this.getMonth()+1,//month"d+": this.getDate(),//day"h+": this.getHours(),//hour"m+": this.getMinutes(),//minute"s+": this.getSeconds(),//second"q+": Math.floor((this.getMonth()+3)/3),//quarter"S": this.getMilliseconds()//millisecond}if(/(y+)/.test(format))format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(varkino)if(newRegExp("("+k+")").test(format))format=format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :
("00"+o[k]).substr((""+o[k]).length));returnformat;}

/**

  • 获取一定时间周期的具体时间
  • @param data 详情请看if判断
  • @returns {*} 日期字符串 */
//console.log(getDataDay('yesterday'));functiongetDataDay(data){/** * 时间日期类 */varnow=newDate();//当前日期varnowDayOfWeek=now.getDay();//今天本周的第几天varnowDay=now.getDate();//当前日varnowMonth=now.getMonth();//当前月varnowYear=now.getYear();//当前年nowYear+=(nowYear<2000) ? 1900 : 0;//if(data=='today'){varyesterday=newDate(nowYear,nowMonth,nowDay);//今天returnformatDate(yesterday);}elseif(data=='yesterday'){varyesterday=newDate(nowYear,nowMonth,nowDay-1);//昨天returnformatDate(yesterday);}elseif(data=='weekStart'){//获取本周第一天日期varweekStart=newDate(nowYear,nowMonth,nowDay+(1-nowDayOfWeek));returnformatDate(weekStart);}elseif(data=='weekEnd'){//获取本周最后一天日期varweekStart=newDate(nowYear,nowMonth,nowDay+(7-nowDayOfWeek));returnformatDate(weekStart);}elseif(data=='lastWeekStart'){//获得上周第一天日期varlastWeekStart=newDate(nowYear,nowMonth,nowDay+(-6-nowDayOfWeek));returnformatDate(lastWeekStart);}elseif(data=='lastWeekEnd'){//获得上周最后一天日期varlastWeekEnd=newDate(nowYear,nowMonth,nowDay-nowDayOfWeek);returnformatDate(lastWeekEnd);}elseif(data=='monthStart'){//本月第一天varmonthStartDate=newDate(nowYear,nowMonth,1);returnformatDate(monthStartDate);}elseif(data=='monthEnd'){//本月最后一天varmonthStartDate=newDate(nowYear,nowMonth+1,-1);returnformatDate(monthStartDate);}elseif(data=='lastMonthStart'){//上月第一天varmonthStartDate=newDate(nowYear,(nowMonth-1),1);returnformatDate(monthStartDate);}elseif(data=='LastMonthEnd'){//上月最后一天varmonthStartDate=newDate(nowYear,nowMonth,-1);returnformatDate(monthStartDate);}//格式化时间functionformatDate(date){varmyyear=date.getFullYear();varmymonth=date.getMonth()+1;varmyweekday=date.getDate();if(mymonth<10){mymonth="0"+mymonth;}if(myweekday<10){myweekday="0"+myweekday;}return(myyear+"/"+mymonth+"/"+myweekday);}}

#Cookie操作

functiongetCookie(c_name){if(document.cookie.length>0){varc_start=document.cookie.indexOf(c_name+"=")if(c_start!=-1){c_start=c_start+c_name.length+1;varc_end=document.cookie.indexOf(";",c_start);if(c_end==-1)c_end=document.cookie.length;returnunescape(document.cookie.substring(c_start,c_end));}}return"";}functionsetCookie(c_name,value,expiredays){if(!expiredays){expiredays=100;}varexdate=newDate();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+"="+escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());}

# 获取一个唯一ID JavaScript生成GUID的算法

全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。

GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。

//算法1functionuuid(){vars=[];varhexDigits="0123456789abcdef";for(vari=0;i<36;i++){s[i]=hexDigits.substr(Math.floor(Math.random()*0x10),1);}s[14]="4";// bits 12-15 of the time_hi_and_version field to 0010s[19]=hexDigits.substr((s[19]&0x3)|0x8,1);// bits 6-7 of the clock_seq_hi_and_reserved to 01s[8]=s[13]=s[18]=s[23]="-";varuuid=s.join("");returnuuid;}//算法2functionguid(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){varr=Math.random()*16|0,v=c=='x' ? r : (r&0x3|0x8);returnv.toString(16);});}//算法3functionguid(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){varr=Math.random()*16|0,v=c=='x' ? r : (r&0x3|0x8);returnv.toString(16);});}//算法3functionguid(){functionS4(){return(((1+Math.random())*0x10000)|0).toString(16).substring(1);}return(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());}//算法4functionuuid(len,radix){varchars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');varuuid=[],i;radix=radix||chars.length;if(len){// Compact formfor(i=0;i<len;i++)uuid[i]=chars[0|Math.random()*radix];}else{// rfc4122, version 4 formvarr;// rfc4122 requires these charactersuuid[8]=uuid[13]=uuid[18]=uuid[23]='-';uuid[14]='4';// Fill in random data. At i==19 set the high bits of clock sequence as// per rfc4122, sec. 4.1.5for(i=0;i<36;i++){if(!uuid[i]){r=0|Math.random()*16;uuid[i]=chars[(i==19) ? (r&0x3)|0x8 : r];}}}returnuuid.join('');}//这个可以指定长度和基数。比如:// 8 character ID (base=2)uuid(8,2)// "01001010"// 8 character ID (base=10)uuid(8,10)// "47473046"// 8 character ID (base=16)uuid(8,16)// "098F4D35"

About

No description or website provided.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors