布尔值相关

强制转换

  1. let isA = !!b; // boolean类型的变量,命名最好带上 isXXX, hasXXX...
  2. !!0 // false
  3. !!1 // true
  4. !!2 // true
  5. !!"" // false
  6. !!"string" // true
  7. !!null // false
  8. !!undefined // false
  9. !!false // false
  10. !!ture // ture
  11. !!{} // true
  12. !![] // true

数值相关

强制转换

  1. let a = '123' - 0;
  2. // 将一个字符串数组全部转换成数值数组
  3. ['1', '2', '3'].map(Number) // [1, 2, 3]

字符串相关

强制转换

  1. let a = 123 + '';
  2. // 将一个数值数组全部转换成字符串数组
  3. [1, 2, 3].map(String) // ['1', '2', '3']

字符串自动补全

padStart,这个是es6新加的函数,非常好用,

  1. padStart, padEnd 字符串补全长度的功能
  2. padStart 头部补全
  3. padEnd 尾部补全
  1. '1'.padStart(10, '0') // "0000000001"
  2. '1'.padEnd(10, '0') // "1000000000"
  3. '123456'.padStart(10, '0') // "0000123456"
  4. '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
  5. // 显示年月日
  6. const date = new Date();
  7. var str = date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0') // "2019-12-05"

对象(狭义)相关

对象与字符串之间互转

  1. // JSON转换对象与对象字符串,比如localStorage, 存储的时候,必须要stringify一下,取出来,也需要parse
  2. let obj = {
  3. "name": "Aco",
  4. "age": 18,
  5. "address": "XXX"
  6. };
  7. let a = JSON.stringify(obj) // "{"name":"Aco","age":18,"address":"XXX"}"
  8. let b = JSON.parse(a)
  9. /*
  10. {
  11. "name": "Aco",
  12. "age": 18,
  13. "address": "XXX"
  14. };
  15. */
  16. // 必要的时候,需要使用try catch
  17. let b = {};
  18. try {
  19. b = JSON.parse(a);
  20. }catch(e) {
  21. console.log(e);
  22. }

数组

多维数组展开

  1. const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v) ));
  2. deepFlatten([[1, [2], [[3], 4], 5], 2]); // [1, 2, 3, 4, 5, 2]
  3. // es6有一个语法糖 arr.flat(n) n为指定的展开层数
  4. const arr = [1, 2, [3, 4]]
  5. arr.flat() // [1, 2, 3, 4] 扁平化数组, 默认展开一层。
  6. const arr2 = [1, 2, [3, 4, [5, 6]]]
  7. arr2.flat() // [1, 2, 3, 4, [5, 6]]
  8. arr2.flat(2) // [1, 2, 3, 4, 5, 6]

数组去重

这里方法有很多很多重,es5的几种方法,又漏洞,比如不能识别NaN, 建议直接用es6语法

  1. var myArr = [1, 1, 2, 1, NaN, undefined, undefined, NaN, 3, 3, 4, null, null] // 测试数据 方便在浏览器控制台测试就都使用var了,这样改数据就不用重新刷新浏览器了。。。
  2. // set方法
  3. var unique1 = (arr) => [...new Set(arr)];
  4. unique1(myArr) // [1, 2, NaN, undefined, 3, 4, null]

函数相关

随机生产一定位数的验证码

网上看到的,用到了很多次

  1. const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");

RGB 颜色转 16进制颜色

  1. const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
  2. RGBToHex(255, 165, 1); // 'ffa501'

See the Pen 2019-09 daliyCo