记录一些实用的小技巧-JS篇
程序员文章站
2022-07-01 15:51:17
1.16进制随机颜色 let color = '#'+Math.random().toString(16).slice(-6) 2.类型判断工具函数 function isType(target, type) { let targetType = Object.prototype.toString. ......
1.16进制随机颜色
let color = '#'+math.random().tostring(16).slice(-6)
2.类型判断工具函数
function istype(target, type) { let targettype = object.prototype.tostring.call(target).slice(8, -1).tolowercase() type = type.tolowercase() return targettype === type }
istype([],'array') //true
3.正则匹配两个字符间的内容
let str = '#javascript#html#css#' let res = str.match(/#.*?#/)[0]
4.简洁的设置默认参数
if(!arr){ arr = [] } arr.push(1) //可以这样写 (arr && (arr=[])).push(1)
5.reduce会更简洁
filter和map的组合使用可能很多人都会使用过,但是这样会进行两次遍历操作。可以使用reduce遍历一次完成同样的操作。
reduce接受一个回调函数和一个默认值。
回调函数接受两个参数,prev是上次返回值,curr是当前遍历值。在第一次遍历时,prev为默认值,每次遍历返回的prev都会在下一个遍历中取到。reduce因此也被叫做”累加函数“。
let people = [{name:'joe',age:18},{name:'mike',age:19},{name:'jack',age:20}] people.fliter(p=>p.age < 20).map(p=>p.name) //可以这样写 people.reduce((prev,curr)=>{ if(age<20){ prev.push(curr.name) } return prev },[])
6.策略模式
使用策略模式来代替一堆的 if...else,让代码看起来更简洁
if(type == = 'content'){ getcontent() }else if(type === 'hot'){ gethot() }else if(type === 'rank'){ getrank() } ... //可以这样写 let action = { content: getcontent, hot: gethot, rank: getrank, .... } action[type]()
7.json.stringify的其他参数
let str = {a:1,b:2,c:3} //过滤 json.stringify(str, ['a']) //"{"a":1}" //格式化 json.stringify(str, null, 2) /* "{ "a": 1, "b": 2, "c": 3 }" */
8.获取月份的最后一天
new date('2019','2',0).getdate()
部分来源于网络收集,不定时更新~