秘技·JS篇
2019, Dec 30
JS就像一个深渊,当你凝视深渊的时候,深渊也在凝视着你。
1.【秘技】向下取整
let a = ~~1.2;
let b= 1.2 | 0;
let c= 1.2 ^ 0;
let d= 1.2 >> 0;
let e= 1.2 << 0; // 同上

注:当数值超过±2^31-1即2147483647时,位操作会产生问题,所以,使用时请限制使用范围。
2.【秘技】交换数值
let a=1,b=2;
普攻
a += b;
b = a - b;
a -= b;

始解
a ^= b;
b ^= a;
a ^= b;

卍解
[b, a] = [a, b];

3.【秘技】数组去重
卍解
[...new Set([1, 2, 3, '1', 2, 3])];
别想那么多,直接上大招
4.【秘技】转数值
卍解
+'123';
+'45.6';

+[]==>0,神奇吧。
注意:无效字符串会被转为NaN,慎用!
与parseInt区别

5.【秘技】转字符串
卍解
123+'';
true+'';
[1,2,3]+'';

6.【秘技】转布尔值
卍解
!!'123';
!!'';
!!null;
!!{};
!![];
!!0;
!!1;

7.【秘技】获取时间戳
卍解
+new Date

8.【秘技】格式化金钱
始解-正则实现
'1234567890'.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
'1234567890'.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,'$1,');
卍解
(1234567890).toLocaleString('en-US');

‘en-US’不加也可,(123456789).toLocaleString()
9.【秘技】统计字符串中相同字符次数
'abcdabcaba'.split('').reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});

持续更新中。。。
我不生产代码,我只是代码的搬运工,搬砖去也。(@^_^@)
