每日JavaScript-31 一些小技巧

https://juejin.im/post/5cc55eb5e51d456e577f93f0
在掘金看到这篇文章,里面有很多“邪门歪道”的JavaScript的技巧,对于我这种菜鸡还是挺有趣的。
创建过去七天的数组

// 创建过去七天的数组
[...Array(7).keys()].map(days => new Date(Date.now() - 86400000 * days))

把减号变为加号就是未来七天的数组

生成随机ID
ID包括数字或字母

Math.random().toString(36).subString(2)

为什么转36位呢?其实很简单,16位的10-16用A-F表示。当36位时的10-36用A-Z表示。subString是提取字符串的函数,接受两个参数,第一个是提前起始的index,第二是提取结束的jndex,默认为字符的结尾。

获取URL的查询参数

q={};location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);q;

本地时间

// 创建本地时间
<body onload="setInterval(()=>document.body.innerHTML=new Date().toLocaleString().slice(10,19))"></body>

生成随机颜色

// 生成随机十六进制代码 如:'#c618b2'
'#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');

恶心的面试题

for(i=0;++i<101;console.log(i%5?f||i:f+'Buzz'))f=i%3?'':'Fizz'

生成键盘图案
尽管输出看看

// 用字符串返回一个键盘图形
(_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x<y?2:' 667699'[x=["BS","TAB","CAPS","ENTER"][p++]||'SHIFT',p])}\\|`,m+=y+(x+'    ').slice(0,w)+y+y,n+=y+b+y+y,l+=' __'+b)[73]&&(k.push(l,m,n,o),l='',m=n=o=y),m=n=o=y='|',p=l=k=[])&&k.join`
`)()

数组去重
我专门写了一篇博客介绍了十种去重方法,今天再介绍一种巧妙用布尔操作符进行计算

let arr = [1, 2, 3, 1, 1, 2, 3, 3, 4, 3, 4, 5]

let result = arr.reduce((prev, item, index, arr) => {
!prev.includes(item) && prev.push(item);
return prev
}, [])
console.log(result);  //[1, 2, 3, 4, 5]

&& 操作符会检查第一个参数是否为true,当第一个操作数为false时,不会对第二个操作数进行求职。相反,如果第一个操作数为true时,则会对第二个操作数进行求值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值