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 相关文章推荐
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 Javascript
浅谈Javascript事件处理程序的几种方式
Jun 27 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
Nov 02 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
Nov 12 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 Javascript
vue style width a href动态拼接问题的解决
Aug 07 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
html读出文本文件内容
2007/01/22 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
python读取注册表中值的方法
2013/04/08 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
大学学年自我鉴定
2013/10/28 职场文书
业务代表的岗位职责
2013/11/16 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
小学生安全演讲稿
2014/04/25 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
农业项目合作意向书
2015/05/08 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
宾馆客房管理制度
2015/08/06 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android