想来搞前端也快2年时间来,想起在刚开始写Javascript的时候,总是能遇见一些奇奇怪怪的问题, 和一些让人 WTF的操作,后面越来越深入的了解到这门语言后,一些令人摸不着头脑东西也就明白为什么会这样了,
这里也是记录一些好玩好用的JavaScript的片段,也算是一种输出吧
将多维数组变成一维数组
let str = [1,2,[3,4,5,6,7],[8,[10,9]]];
str.join().split(','); str.join(',').split(',');
str.flat(Infinity);
|
判断是否空对象
let isEmptyObject = function(obj) { for(let k in obj) { return false; } return true; };
let isEmptyObj = Object.keys(obj).length === 0;
|
判断是否是空数组
let arr = []; Array.isArray(arr) && arr.length !== 0;
|
向下取整的几种简写方式
~~2.33
2.33 | 0
2.33 >> 0
2.33 << 0
2.33 ^ 0
|
取随机字符串
原理就是将随机转成字符串(11 ~ 36)进制字符串(10进制以上开始出现字母),然后截取去掉小数位
let str = Math.random().toString(16).substring(2); let str2 = Math.random().toString(32).substring(2); console.log(str) console.log(str2)
|
一行代码评级组件
用法:”★★★★★☆☆☆☆☆”.slice(5 - num, 10 - num); num的值在1 ~ 5之间
上面的方法只能实现整数,那如何实现小数评级呢?
<div class="box" data-attr="after"></div>
|
.box:after{ content: attr(data-attr); color: #0C68F7; }
|
$('.after').attr('data-attr','★★★★☆')
|
查看 css ::after (:after) 属性👉🏿:Web 开发技术CSS(层叠样式表)::after (:after)
统计字符串中相同字符出现的次数
let str = 'abcdaabc';
let result = arr.split('').reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});
console.log(result);
|
😂立即执行函数的几种写法…..
( function() {}() ); ( function() {} )(); [ function() {}() ]; ~ function() {}(); ! function() {}(); + function() {}(); - function() {}(); delete function() {}(); typeof function() {}(); void function() {}(); new function() {}(); new function() {}; var f = function() {}(); 1, function() {}(); 1 ^ function() {}(); 1 > function() {}();
|
DOM调试模式
[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) })
|