反转字符串

  1. const reverse = str => str.split('').reverse().join('');
  2. console.log('reverse', reverse('hello world'))

获取变量的实际类型(常用)

  1. const trueTypeOf = (obj) => {
  2. return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
  3. };
  4. console.log(trueTypeOf(''));
  5. // string
  6. console.log(trueTypeOf(0));
  7. // number
  8. console.log(trueTypeOf());
  9. // undefined
  10. console.log(trueTypeOf(null));
  11. // null
  12. console.log(trueTypeOf({}));
  13. // object
  14. console.log(trueTypeOf([]));
  15. // array
  16. console.log(trueTypeOf(0));
  17. // number
  18. console.log(trueTypeOf(() => {}));
  19. // function

检查变量是否为数组

  1. const isArray = (arr) => Array.isArray(arr);
  2. console.log(isArray([1, 2, 3]));
  3. // true
  4. console.log(isArray({ name: 'Ovi' }));
  5. // false
  6. console.log(isArray('Hello World'));
  7. // false

获取数组中的唯一值(数组去重)

  1. const uniqueArr = (arr) => [...new Set(arr)];
  2. console.log(uniqueArr([1, 2, 3, 1, 2, 3, 4, 5]));
  3. // [1, 2, 3, 4, 5]

数组对象去重

  1. const uniqueElementsBy = (arr, fn) =>arr.reduce((acc, v) => {if (!acc.some(x => fn(v, x))) acc.push(v);return acc;}, []);
  2. uniqueElementsBy([{id: 1, name: 'Jhon'}, {id: 2, name: 'sss'}, {id: 1, name: 'Jhon'}], (a, b) => a.id == b.id)
  3. // [{id: 1, name: 'Jhon'}, {id: 2, name: 'sss'}]

随机生成六位数字验证码

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

window.location.search 转 JS 对象

  1. const searchObj = search => JSON.parse(`{"${decodeURIComponent(search.substring(1)).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')}"}`);
  2. // 假如请求url为
  3. // 'https://www.baidu.com?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=js&rsv_pq=a86b5e5f0007bceb&rsv_t=1e1fAVan%2BVlnkhJHFB0BIGLdLM2slszYMJBTTfFkmyyBUzBpw0ggeuVDE50&rqlang=cn&rsv_enter=0&inputT=1287&rsv_sug3=5&rsv_sug1=3&rsv_sug7=101&rsv_sug2=0&rsv_sug4=1907'
  4. // 那么 window.location.search 就为:
  5. let search = '?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=js&rsv_pq=a86b5e5f0007bceb&rsv_t=1e1fAVan%2BVlnkhJHFB0BIGLdLM2slszYMJBTTfFkmyyBUzBpw0ggeuVDE50&rqlang=cn&rsv_enter=0&inputT=1287&rsv_sug3=5&rsv_sug1=3&rsv_sug7=101&rsv_sug2=0&rsv_sug4=1907'
  6. searchObj(search)
  7. console.log('222', searchObj(search))

将数字转化为千分位格式

  1. const toDecimalMark = num => num.toLocaleString('en-US');
  2. toDecimalMark(25305030399.8790); // "25,305,030,399.879"

多维数组转一维数组

  1. const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));
  2. deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5]

RGB 颜色转 16进制颜色

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