15个值得收藏的JavaScript函数
在开发一个JavaScript项目时,经常会用到以前开发过的一些工具函数,收集这些函数,当你需要它们的时候,将节省你大量的开发时间,本文将给大家带来15个常用的工具函数,需要的小伙伴可以参考下
目录
1、逆转数字
2、获取数组中最大的n个数字
3、计算阶乘
4、判断当前运行环境是否为浏览器
5、判断当前运行环境是否为Node.js
6、获取url上的参数
7、rgb(x,x,x)颜色表达方式格式转换成对象格式
8、转义字符串以在 HTML 中使用
9、Unescapes 转义 HTML 字符
10、生成指定范围内的随机整数
11、将波浪号路径转换为绝对路径
12、获取不带任何参数或片段标识符的当前 URL
13、以字节为单位返回字符串的长度
14、随机获取数组中元素
15、检查字符串是否为有效的 JSON
1、逆转数字
1 2 3 4 5 6 7 | const reverseNumber = n => parseFloat(`${n}`.split( '' ).reverse().join( '' )) * Math.sign(n); reverseNumber(123); // 321 reverseNumber(-200); // -2 reverseNumber(32.4); // 4.23 reverseNumber(-32.4); // -4.23 |
2、获取数组中最大的n个数字
1 2 3 4 5 | const maxFromArray = (array, number = 1) => [...array] .sort((x, y) => y -x).slice(0, number); maxFromArray([2, 1, 4, 3, 5, 6]); // [6] maxFromArray([2, 1, 4, 3, 6, 6], 2); // [6, 6] |
3、计算阶乘
1 2 3 4 5 6 7 8 9 10 11 | const factorial = (number) => number < 0 ? (() => { throw new TypeError( '类型错误' ); })() : number <= 1 ? 1 : number * factorial(number - 1); factorial(4); // 24 factorial(10); // 3628800 |
4、判断当前运行环境是否为浏览器
1 2 3 4 | const isBrowser = () => ![ typeof window, typeof document].includes( 'undefined' ); isBrowser(); // false (Node) isBrowser(); // true (browser) |
5、判断当前运行环境是否为Node.js
1 2 3 4 5 6 7 | const isNode = () => typeof process !== 'undefined' && !!process.versions && !!process.versions.node; isNode(); // true (Node) isNode(); // false (browser) |
6、获取url上的参数
1 2 3 4 5 6 7 8 9 10 11 | const getURLParams = url => (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce( (a, v) => ( (a[v.slice(0, v.indexOf( '=' ))] = v.slice(v.indexOf( '=' ) + 1)), a ), {} ); getURLParams( 'qq.com' ); // {} getURLParams( 'https://xx.com?name=tntweb&age=20' ); // {name: 'tntweb', age: '20'} |
7、rgb(x,x,x)颜色表达方式格式转换成对象格式
1 2 3 4 5 6 | const toRGBObject = rgbStr => { const [red, green, blue] = rgbStr.match(/\d+/g).map(Number); return { red, green, blue }; }; toRGBObject( 'rgb(100, 150, 200)' ); // {red: 100, green: 150, blue: 200} |
8、转义字符串以在 HTML 中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | const escapeHTML = str => str.replace( /[&<> '"]/g, tag => ({ ' & ': ' & ', ' < ': ' < ', ' > ': ' > ', "' ": ''', '" ': '"' }[tag] || tag) ); escapeHTML( '<a href="#" rel="external nofollow" >tntweb</a>' ); |
9、Unescapes 转义 HTML 字符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | const unescapeHTML = str => str.replace( /&|<|>|& #39;|"/g, tag => ({ '&' : '&' , '<' : '<' , '>' : '>' , ''' : "'" , '" ': ' " ' }[tag] || tag) ); unescapeHTML(' <a href=" #">tntweb</a>'); |
10、生成指定范围内的随机整数
1 2 3 4 | const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; randomIntegerInRange(1, 7); // 1 - 7 |
11、将波浪号路径转换为绝对路径
1 2 3 4 | const reversePath = str => str.replace(/^~($|\/|\\)/, `${require( 'os' ).homedir()}$1`); reversePath( '~/web' ); // '/Users/[userName]/web' |
12、获取不带任何参数或片段标识符的当前 URL
1 2 3 4 | const getBaseURL = url => url.replace(/[? #].*$/, ''); getBaseURL( 'https://xx.com/index?name=tntweb&company=tencent' ); // https://xx.com/index |
13、以字节为单位返回字符串的长度
1 2 3 4 | const byteSize = str => new Blob([str]).size; byteSize( '????' ); // 4 byteSize( 'Hello World' ); // 11 |
14、随机获取数组中元素
1 2 3 | const randomly = arr => arr[Math.floor(Math.random() * arr.length)]; randomly([1, 3, 5, 7, 9, 11]); |
15、检查字符串是否为有效的 JSON
1 2 3 4 5 6 7 8 9 10 11 12 | const isValidJSON = str => { try { JSON.parse(str); return true ; } catch (e) { return false ; } }; isValidJSON( '{"name":"tntweb","age":20}' ); // true isValidJSON( '{"name":"tntweb",age:"20"}' ); // false isValidJSON( null ); // true |
到此这篇关于15个值得收藏的JavaScript函数的文章就介绍到这了
原文链接:https://segmentfault.com/a/1190000040661568