13个值得你收藏的JavaScript函数_运行环境

在开发一个JavaScript项目时,经常会用到以前开发过的一些工具函数,收集这些函数,当你需要它们的时候,将节省你大量的开发时间。

今天,本文将给大家分享常用的工具函数,你可以使用它们,并以优雅的方式解决这些问题。

1、逆转数字

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个数字

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、计算阶乘

const factorial = (number) =>
number < 0
? (() => {
throw new TypeError('类型错误');
})()
: number <= 1
? 1
: number * factorial(number - 1);


factorial(4); // 24
factorial(10); // 3628800

4、判断当前运行环境是否为浏览器

const isBrowser = () => ![typeof window, typeof document].includes('undefined');


isBrowser(); // false (Node)
isBrowser(); // true (browser)

5、判断当前运行环境是否为Node.js

const isNode = () =>
typeof process !== 'undefined' &&
!!process.versions &&
!!process.versions.node;


isNode(); // true (Node)
isNode(); // false (browser)

6、获取url上的参数

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)颜色表达方式格式转换成对象格式

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 中使用

const escapehtml = str =>
str.replace(
/[&<>'"]/g,
tag =>
({
'&': '&',
'<': '<',
'>': '>',
"'": ''',
'"': '"'
}[tag] || tag)
);


escapeHTML('<a href="#">tntweb</a>');

9、Unescapes 转义 HTML 字符

const unescapeHTML = str =>
str.replace(
/&|<|>|'|"/g,
tag =>
({
'&': '&',
'<': '<',
'>': '>',
''': "'",
'"': '"'
}[tag] || tag)
);


unescapeHTML('<a href="#">tntweb</a>');

10、生成指定范围内的随机整数

const randomIntegerInRange = (min, max) =>
Math.floor(Math.random() * (max - min + 1)) + min;


randomIntegerInRange(1, 7); // 1 - 7

11、将波浪号路径转换为绝对路径

const reversePath = str =>
str.replace(/^~($|\/|\\)/, `${require('os').homedir()}$1`);


reversePath('~/web'); // '/Users/[userName]/web'

12、获取不带任何参数或片段标识符的当前 URL

const getBaseURL = url => url.replace(/[?#].*$/, '');


getBaseURL('https://xx.com/index?name=tntweb&company=tencent');
// https://xx.com/index

13、以字节为单位返回字符串的长度。

const byteSize = str => new Blob([str]).size;


byteSize('


学习更多技能

请点击下方公众号



13个值得你收藏的JavaScript函数_字符串_02

13个值得你收藏的JavaScript函数_运行环境_03