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 相关文章推荐
JQuery Tab选项卡效果代码改进版
Apr 01 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
JavaScript的函数式编程基础指南
Mar 19 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
bootstrap Table插件使用demo
Aug 07 Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 jQuery
vue.js在标签属性中插入变量参数的方法
Mar 06 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
Sep 18 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
详解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/10/26 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
eval的两组性能测试数据
2012/08/17 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
python追加元素到列表的方法
2015/07/28 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python实现大文件分割与合并
2019/07/22 Python
python urllib爬虫模块使用解析
2019/09/05 Python
python的命名规则知识点总结
2019/10/04 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
机关出纳岗位职责
2014/04/03 职场文书
中学生英语演讲稿
2014/04/26 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
应届生简历自我评价
2015/03/11 职场文书
2015年推普周活动方案
2015/05/06 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
python​格式化字符串
2022/04/20 Python