15个值得收藏的JavaScript函数


Posted in Javascript onSeptember 15, 2021

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

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

9、Unescapes 转义 HTML 字符

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、生成指定范围内的随机整数

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('?'); // 4
byteSize('Hello World'); // 11

14、随机获取数组中元素

const randomly = arr => arr[Math.floor(Math.random() * arr.length)];

randomly([1, 3, 5, 7, 9, 11]);

15、检查字符串是否为有效的 JSON

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函数的文章就介绍到这了,更多相关JavaScript函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript parseInt 大改造
Sep 27 Javascript
javascript级联下拉列表实例代码(自写)
May 10 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
jquery实现手风琴效果
Nov 20 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
JS排序之快速排序详解
Apr 08 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 Javascript
Emberjs 通过 axios 下载文件的方法
Sep 03 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
jQuery实现增删改查
Dec 22 jQuery
详解JavaScript中Arguments对象用途
详细谈谈JavaScript中循环之间的差异
Aug 23 #Javascript
javascript代码简写的几种常用方式汇总
Aug 23 #Javascript
vue使用Google Recaptcha验证的实现示例
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 #Vue.js
关于React Native使用axios进行网络请求的方法
Aug 02 #Javascript
vscode中使用npm安装babel的方法
You might like
解析php取整的几种方式
2013/06/25 PHP
三种php连接access数据库方法
2013/11/11 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
Vue实现简单分页器
2018/12/29 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
Python箱型图处理离群点的例子
2019/12/09 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
UDP协议功能
2013/01/06 面试题
国外软件测试工程师面试题
2016/12/09 面试题
项目申请汇报材料
2014/08/16 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
运动会主持人开幕词
2016/03/04 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书