Js方法-慢慢积累

目录

一、padStart(length[,str])

二、正整数拆成2次幂数相加

三、遍历对象


 一、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]]
for...of...遍历可迭代对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值