反转字符串
const reverse = str => str.split('').reverse().join('');console.log('reverse', reverse('hello world'))
获取变量的实际类型(常用)
const trueTypeOf = (obj) => { return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();};console.log(trueTypeOf(''));// stringconsole.log(trueTypeOf(0));// numberconsole.log(trueTypeOf());// undefinedconsole.log(trueTypeOf(null));// nullconsole.log(trueTypeOf({}));// objectconsole.log(trueTypeOf([]));// arrayconsole.log(trueTypeOf(0));// numberconsole.log(trueTypeOf(() => {}));// function
检查变量是否为数组
const isArray = (arr) => Array.isArray(arr);console.log(isArray([1, 2, 3]));// trueconsole.log(isArray({ name: 'Ovi' }));// falseconsole.log(isArray('Hello World'));// false
获取数组中的唯一值(数组去重)
const uniqueArr = (arr) => [...new Set(arr)];console.log(uniqueArr([1, 2, 3, 1, 2, 3, 4, 5]));// [1, 2, 3, 4, 5]
数组对象去重
const uniqueElementsBy = (arr, fn) =>arr.reduce((acc, v) => {if (!acc.some(x => fn(v, x))) acc.push(v);return acc;}, []);uniqueElementsBy([{id: 1, name: 'Jhon'}, {id: 2, name: 'sss'}, {id: 1, name: 'Jhon'}], (a, b) => a.id == b.id)// [{id: 1, name: 'Jhon'}, {id: 2, name: 'sss'}]
随机生成六位数字验证码
const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");// 941377
window.location.search 转 JS 对象
const searchObj = search => JSON.parse(`{"${decodeURIComponent(search.substring(1)).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')}"}`);// 假如请求url为// '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'// 那么 window.location.search 就为: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'searchObj(search)console.log('222', searchObj(search))
将数字转化为千分位格式
const toDecimalMark = num => num.toLocaleString('en-US');toDecimalMark(25305030399.8790); // "25,305,030,399.879"
多维数组转一维数组
const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5]
RGB 颜色转 16进制颜色
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');RGBToHex(255, 165, 1); // 'ffa501'