返回顶部
首页 > 资讯 > 前端开发 > JavaScript >15个值得收藏的JavaScript函数
  • 337
分享到

15个值得收藏的JavaScript函数

2024-04-02 19:04:59 337人浏览 泡泡鱼
摘要

目录1、逆转数字2、获取数组中最大的n个数字3、计算阶乘4、判断当前运行环境是否为浏览器5、判断当前运行环境是否为node.js6、获取url上的参数7、rgb(x,x,x)颜色表达

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函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 15个值得收藏的JavaScript函数

本文链接: https://www.lsjlt.com/news/135668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 15个值得收藏的JavaScript函数
    目录1、逆转数字2、获取数组中最大的n个数字3、计算阶乘4、判断当前运行环境是否为浏览器5、判断当前运行环境是否为Node.js6、获取url上的参数7、rgb(x,x,x)颜色表达...
    99+
    2024-04-02
  • 4个值得收藏的Javascript技巧
    目录前言1.变量转字符串2.普通对象3.once4.浏览器嗅探在Chrome中执行在Node中执行在Chrome中执行前言 学习一门语言的一种非常有效的方法就是阅读该编程语言开发的优...
    99+
    2024-04-02
  • 分享6个值得收藏的Python代码
    目录1、类有两个方法,一个是 new,一个是 init,有什么区别,哪个会先执行呢?2、map 函数返回的对象3、正则表达式中 compile 是否多此一举?4、[[1,2],[3,...
    99+
    2024-04-02
  • 值得收藏的27个Linux文档编辑命令
    linux col命令 Linux col命令用于过滤控制字符。 在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字...
    99+
    2022-06-04
    linux文档编辑命令 linux 编辑命令
  • 25个值得收藏的Python文本处理案例
    目录1提取PDF内容2提取Word内容3提取Web网页内容4读取Json数据5读取CSV数据6删除字符串中的标点符号7使用NLTK删除停用词8使用TextBlob更正拼写9使用NLT...
    99+
    2024-04-02
  • 完整的 MySQL 规范,值得收藏
    一、前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational...
    99+
    2023-10-20
    mysql 数据库
  • Vue.js性能优化N个技巧(值得收藏)
    目录Functional componentsChild component splittingLocal variablesReuse DOM with v-showKeepAli...
    99+
    2024-04-02
  • 值得收藏的CSS技巧有哪些
    这篇文章主要讲解了“值得收藏的CSS技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“值得收藏的CSS技巧有哪些”吧!1. 使用 Shape-outs...
    99+
    2024-04-02
  • MySQL20个高性能架构设计原则(值得收藏)
    开源数据库架构设计原则 01. 技术选型 选择成熟的平台和技术,同时是最熟悉的,能做到极致的,用好不用坏,用熟不用生。目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、...
    99+
    2022-05-13
    MySQL 架构 MySQL 架构设计原则
  • ES2019中值得收藏的功能有哪些
    这篇文章主要介绍了ES2019中值得收藏的功能有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ES2019 规范是对 JavaScript的小规模扩展,但仍带来了一些有趣...
    99+
    2023-06-14
  • 超详细汇总21个值得收藏的mysql优化实践
    目录1.为查询缓存优化你的查询2. EXPLAIN 你的 SELECT 查询3. 当只要一行数据时使用 LIMIT 1 14. 为搜索字段建索引5. 在 Join 表的时候使...
    99+
    2024-04-02
  • MySQL数据库连接异常汇总(值得收藏)
    在Centos上部署项目发现一个奇怪的问题,数据库连接一直抛异常。于是花了两个小时搜了各种数据库连接异常导致的原因,最终问题得以解决。同时,把解决过程中搜集到的异常信息汇总一下,当大家遇到类似的问题时,给大家以思路。...
    99+
    2022-05-31
    MySQL 连接 MySQL 连接异常
  • 值得收藏的HTML5资源分别是怎样的
    值得收藏的HTML5资源分别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本文收集了 15 个非常值得收藏的 HTML5 资源,这些资...
    99+
    2024-04-02
  • 值得收藏的CSS可视化工具有哪些
    这篇文章主要讲解了“值得收藏的CSS可视化工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“值得收藏的CSS可视化工具有哪些”吧!1. Neumorp...
    99+
    2024-04-02
  • 值得收藏的30道Python练手题(附详解)
    1. 已知一个字符串为 “hello_world_yoyo”,如何得到一个队列 [“hello”,”world”,”yoyo”] ?使用 split 函数,分割字符串,并且将数据转换成列表类型:test = 'hello_world_yoy...
    99+
    2023-05-14
    Python 练手题
  • 值得收藏的java多线程面试题(附答案)
    本篇文章给大家总结了一些java多线程面试题及答案,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理...
    99+
    2019-04-04
    java 多线程
  • Mybatis一对多查询的两种姿势(值得收藏)
    前言 最近碰到了Mybatis一对多查询的场景,在这里总结对比下常见的两种实现方式。 本文以常见的订单表和订单详情表来举例说明; 数据库表准备 订单表 tbl_order 订单...
    99+
    2024-04-02
  • 值得收藏的2017年Java开发岗位面试题
    下面是我自己收集整理的2017年Java岗位的面试题,可以用它来好好准备面试。一、Java基础 String类为什么是final的。 HashMap的源码,实现原理,底层结构。 说说你知道的几个Java集合类:list、set、queue、...
    99+
    2023-05-31
    java 面试题 ava
  • 值得收藏的9个提高代码运行效率的小技巧(推荐)
    目录1. 减小程序计算量 1.1 示例代码1.2 分析代码1.3 改进代码2. 提取代码中的公共部分2.1 示例代码2.2 分析代码2.3 改进代码3. 消除循环中低效代码...
    99+
    2024-04-02
  • Shell脚本编写的八条可靠建议(值得收藏)
    这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了...
    99+
    2022-06-04
    脚本 八条 可靠
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作