目录
一、padStart(length[,str])
字符串左侧补充str字符,以达到指定的length长度,可用于时间补0操作
若指定长度小于原字符串长度,返回原字符串;str字符串会平铺至满足长度,多余的则截取不要
‘123’.padStart(5,'0') >> '00123'
'123'.padStart(2,'0') >> '123'
'123'.padStart(6,'AB') >> 'ABA123'
'123'.padStart(6,'ABCD') >> 'ABC123'
实际时间补0的时候,会出现以下错误:
因为getHours()得到的值类型为number,而padStart()是字符串的方法,所以要将时间值转为字符串
二、正整数拆成2次幂数相加
- 补充知识:
① 按位与运算 & : 二进制数每一位比较,全部为1则为1
② 左移操作 << : 二进制左移后右侧补0
5<<3 --》 二进制 0000 0101左移3位 --》 二进制 0010 1000 --》 40
便捷结论:正数左移n位,即 正数乘以2的n次方
function separateToList(n) {
let list = []
for (let i = 0; true; i++) {
let m = 1 << i;
if (m > n) break; //m与n比大小,当前m一定比之前所有的2次幂数m的和要大
if ((n & m) == m) {
list.push(m);
}
}
return list //[1,2,16]
}
- 拿n= 7循环分析:
- 小结:强硬地让后端 不要返回加和的总数!要返回拆分好的结果!这个循环太费时!
三、遍历对象
for...in... | for(let key in obj){console.log(key,obj[key])} |
Object.keys(obj) | Object.keys(obj).forEach(key=>console.log(key,obj[key])) |
Object.entries(obj) | Object.entries(obj) // 二维数组[[key,value],[key,value]] |