Open zhangzheng-zz opened 4 years ago
0-9 a-z随机数
// 36进制使用了 0-9 a-z 字母来表示
function genRandomKey () {
return Math.random().toString(36)
.slice(2)
}
toFixed的坑
js中toFixed
是四舍六入,五考虑,五之后大于零才进一,否则舍弃
(10.466).toFixed(2)
// "10.47"
(10.464).toFixed(2)
// "10.46"
(10.465).toFixed(2)
// "10.46"
(10.4651).toFixed(2)
// "10.47"
toFixed(n)
n
超过本身数字时候补0
(1.9).toFixed(3)
// "1.900"
以上两个问题解决方案:
// 目标:(1.945).toFixed(2) -> 1.95 四舍五入
// (1.945).toFixed(4) -> 1.945 多余位数不补零
Number.prototype.toFixed = function(length) {
// 进位
let carry = 0
let num, multiple
// 转字符串
let str = this + ''
// 去小数点位置
let dot = str.indexOf('.')
// 判断保留的后一位是否大于等于 5 大于等于 5 有进位 否则没有
if (str.substr(dot + length + 1, 1) >= 5) carry = 1
// 十的几次倍数
multiple = Math.pow(10,length)
// 乘以倍数向下取整再加上 进位 5入操作
num = Math.floor(this * multiple) + carry
// 再除以倍数 去零操作
let res = num / multiple + ''
return res
}
遍历对象: // 包含不可继承 for in Object.keys() Object.entries() // 包含不可枚举 Object.getOwnPropertyNames() // 以上遍历不到 symbol ownKeys 可以 Reflect.ownKeys()
// 单独遍历 symbol Object.getOwnPropertySymbols()
日期相关
今天、明天、XX天后 判断
判断对当前时间/传入时间是否在一天的某个时间段 传入的开始与结束时间段只有这种格式 : 08:00:00
dayjs