阅读 112

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 =>
      ({
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        "'": '&#39;',
        '"': '&quot;'
      }[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(
    /&amp;|&lt;|&gt;|&#39;|&quot;/g,
    tag =>
      ({
        '&amp;': '&',
        '&lt;': '<',
        '&gt;': '>',
        '&#39;': "'",
        '&quot;': '"'
      }[tag] || tag)
  );
 
unescapeHTML('&lt;a href=&quot;#&quot;&gt;tntweb&lt;/a&gt;');

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函数的文章就介绍到这了

服务器评测 http://www.cncsto.com/ 

服务器测评 http://www.cncsto.com/ 

站长资源 https://www.cscnn.com/ 

小鱼创业 https://www.237fa.com/ 


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐