High一下!

学习笔记-快速取整

每1s向[1,2,3,4,5]前面添加一个不重复的随机数,数组长度达到10结束

1
2
3
4
5
6
7
8
9
10
var aa = [1,2,3,4,5];
var timer = setInterval(function () {
var random = Math.random()*100+1|0;//快速取整
while (aa.indexOf(random)>-1){
random = Math.random()*100+1|0;
}
aa.unshift(random);
if(aa.length==10)clearInterval(timer);
console.log(aa);
},1000);

位运算快速取整

1
2
3
4
5
6
7
8
9
10
11
12
console.time('计时器')
parseInt(12222.22222);
console.timeEnd('计时器');
console.time('计时器')
12222.22222|0;
console.timeEnd('计时器');
console.time('计时器')
~~12222.22222;
console.timeEnd('计时器');
//计时器: 0.021ms
//计时器: 0.019ms
//计时器: 0.00781ms

parseInt 更可靠,但是要注意参数的类型和数量;
用位运算符(~~、>>0、<<0)来“取整”会有一些问题,一般情况不推荐使用;

位运算毕竟是操作符,效率要高一些,如果这个“取整”操作是影响性能的关键操作,并且你知道被操作数不会超出精度限制的情况,可以考虑用位运算

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章