布尔值相关
强制转换
let isA = !!b; // boolean类型的变量,命名最好带上 isXXX, hasXXX...!!0 // false!!1 // true!!2 // true!!"" // false!!"string" // true!!null // false!!undefined // false!!false // false!!ture // ture!!{} // true!![] // true
数值相关
强制转换
let a = '123' - 0;// 将一个字符串数组全部转换成数值数组['1', '2', '3'].map(Number) // [1, 2, 3]
字符串相关
强制转换
let a = 123 + '';// 将一个数值数组全部转换成字符串数组[1, 2, 3].map(String) // ['1', '2', '3']
字符串自动补全
padStart,这个是es6新加的函数,非常好用,
padStart, padEnd 字符串补全长度的功能padStart 头部补全padEnd 尾部补全
'1'.padStart(10, '0') // "0000000001"'1'.padEnd(10, '0') // "1000000000"'123456'.padStart(10, '0') // "0000123456"'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"// 显示年月日const date = new Date();var str = date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0') // "2019-12-05"
对象(狭义)相关
对象与字符串之间互转
// JSON转换对象与对象字符串,比如localStorage, 存储的时候,必须要stringify一下,取出来,也需要parselet obj = {"name": "Aco","age": 18,"address": "XXX"};let a = JSON.stringify(obj) // "{"name":"Aco","age":18,"address":"XXX"}"let b = JSON.parse(a)/*{"name": "Aco","age": 18,"address": "XXX"};*/// 必要的时候,需要使用try catchlet b = {};try {b = JSON.parse(a);}catch(e) {console.log(e);}
数组
多维数组展开
const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v) ));deepFlatten([[1, [2], [[3], 4], 5], 2]); // [1, 2, 3, 4, 5, 2]// es6有一个语法糖 arr.flat(n) n为指定的展开层数const arr = [1, 2, [3, 4]]arr.flat() // [1, 2, 3, 4] 扁平化数组, 默认展开一层。const arr2 = [1, 2, [3, 4, [5, 6]]]arr2.flat() // [1, 2, 3, 4, [5, 6]]arr2.flat(2) // [1, 2, 3, 4, 5, 6]
数组去重
这里方法有很多很多重,es5的几种方法,又漏洞,比如不能识别NaN, 建议直接用es6语法
var myArr = [1, 1, 2, 1, NaN, undefined, undefined, NaN, 3, 3, 4, null, null] // 测试数据 方便在浏览器控制台测试就都使用var了,这样改数据就不用重新刷新浏览器了。。。// set方法var unique1 = (arr) => [...new Set(arr)];unique1(myArr) // [1, 2, NaN, undefined, 3, 4, null]
函数相关
随机生产一定位数的验证码
网上看到的,用到了很多次
const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");
RGB 颜色转 16进制颜色
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');RGBToHex(255, 165, 1); // 'ffa501'
See the Pen 2019-09 daliyCo
