秘技·JS篇

秘技·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; // 同上

1

注:当数值超过±2^31-1即2147483647时,位操作会产生问题,所以,使用时请限制使用范围。

2.【秘技】交换数值

let a=1,b=2;

普攻

a += b;
b = a - b;
a -= b;

2_1

始解

a ^= b;
b ^= a;
a ^= b;

2_2

卍解

[b, a] = [a, b];

2_3

3.【秘技】数组去重

卍解

[...new Set([1, 2, 3, '1', 2, 3])];

别想那么多,直接上大招 3

4.【秘技】转数值

卍解

+'123';
+'45.6';

4_1

+[]==>0,神奇吧。

注意:无效字符串会被转为NaN,慎用!

与parseInt区别

4_2

5.【秘技】转字符串

卍解

123+'';
true+'';
[1,2,3]+'';

5

6.【秘技】转布尔值

卍解

!!'123';
!!'';
!!null;
!!{};
!![];
!!0;
!!1;

6

7.【秘技】获取时间戳

卍解

+new Date

7

8.【秘技】格式化金钱

始解-正则实现

'1234567890'.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
'1234567890'.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,'$1,');

卍解

(1234567890).toLocaleString('en-US');

8

‘en-US’不加也可,(123456789).toLocaleString()

9.【秘技】统计字符串中相同字符次数

'abcdabcaba'.split('').reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});

9

持续更新中。。。

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