js常用小技巧(黑科技)

原文git地址


https://github.com/TigerHee/shareJS



小数取整:

1.234 | 0

~~1.234

1.234 >> 0


妙用隐式转换:

数字字符串转number:

+'123'

new Date转时间戳:

+new Date()

数组/多维数组转逗号分隔字符串:

''+[1, 2 , 3, 3, [2, 3, 4]]


解构:

交换a,b的值:

var a=1;

var b=2;

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

console.log('a ===', a);

console.log('b ===', b);


扩展运算符:

取数组最大值:

Math.max(...[1,2,3])

生成时间:

new Date(...[2018,6,4])

字符串转数组:

method 1:

[...'string']

method 2:

Array.from('string')

合并对象:

let obj1 = {a:1, b:2};

let obj2 = {b:3, c:4};

Object.assign(obj1, obj2)

    等同于

{...obj1, ...obj2}


常用方法:

数字前补0:

preFixNum(num, length) {

    return (Array(length).join('0') + num).slice(-length);

}

数组元素为对象的去重:

[...new Set(arr.map(v => JSON.stringify(v)))].map(v => JSON.parse(v))

数组求和:

var arr = [1,2,3,4,5];

method 1:

var sum = eval(arr.join('+'));

method 2:

var sum = arr.reduce((prev,cur) => prev + cur);

金钱格式化:

let money = 11111;

method 1:

money.toLocaleString('en-US');

method 2:

Intl.NumberFormat().format(money);

method 3:

String(money).replace(/\B(?=(\d{3})+(?!\d))/g, ',');

短路逻辑代替if:

isTrue && console.log(1);

RGB to Hex:

function RGBtoHEX(rgb){

    return ((1<<24) + (rgb.r<<16) + (rgb.g<<8) + rgb.b).toString(16).substr(1);

}

生成指定长度数组:

Array.from(new Array(10).keys());


正则进阶:

捕获括号:

匹配 'tigerHee' 并且记住匹配项

/(tigerHee)/

非捕获括号:

匹配 'tigerHee' 但是不记住匹配项

/(?:tigerHee)/

先行断言:

匹配'tiger'仅仅当'tiger'后面跟着'Hee'

/tiger(?=Hee)/

后行断言:

匹配'Hee'仅仅当'Hee'前面是'tiger'

/(?<=tiger)Hee/

正向否定查找:

匹配'tiger'仅仅当'tiger'后面不跟着'java'

/tiger(?!java)/

你可能感兴趣的:(js常用小技巧(黑科技))