iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >高频使用的JS工具有哪些
  • 514
分享到

高频使用的JS工具有哪些

2023-06-30 11:06:44 514人浏览 薄情痞子
摘要

这篇文章主要介绍了高频使用的js工具有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇高频使用的JS工具有哪些文章都会有所收获,下面我们一起来看看吧。1. 回到顶部较为平滑的回到顶部方案const 

这篇文章主要介绍了高频使用的js工具有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇高频使用的JS工具有哪些文章都会有所收获,下面我们一起来看看吧。

1. 回到顶部

较为平滑的回到顶部方案

const scrollToTop = () => {  const c = document.documentElement.scrollTop || document.body.scrollTop;  if (c > 0) {    window.requestAnimationFrame(scrollToTop);    window.scrollTo(0, c - c / 8);  }};scrollToTop();

2. 删除数组指定项

项目中经常会使用的工具方法,传入目标数组和目标元素,返回一个新数组。

const removeArray = (arr, item) => {  let result = [];  let index = -1;  if (!(arr != null && arr.length)) {    return result;  }  result = arr;  if (Object.prototype.toString.call(item) == "[object Object]") {    index = arr.findIndex((i) => isEqualObject(i, item));  } else {    index = arr.findIndex((i) => i === item);  }  if (index > -1) result.splice(index, 1);  return result;};const isEqualObject = (obja, objb) => {  const aProps = Object.getOwnPropertyNames(obja);  const bProps = Object.getOwnPropertyNames(objb);  if (aProps.length != bProps.length) {    return false;  }  for (let i = 0; i < aProps.length; i++) {    let propName = aProps[i];    let propA = obja[propName];    let propB = objb[propName];    if (!objb.hasOwnProperty(propName)) return false;    if (propA instanceof Object) {      if (!this.isEqualObject(propA, propB)) {        return false;      }    } else if (propA !== propB) {      return false;    }  }  return true;};removeArray([{ name: 1 }, { name: "1" }, 1, "1"], { name: "1" });

3. 获取 url 某一个参数

用于获取url传参获取参数

const getUrlParam = (key) => {  const url = new URL(window.location.href);  const value = url.searchParams.get(key);  return value;};getUrlParam("id");

4. 复制文本

复制各种自定义的文本,浏览器兼容性高

const copyText = (text) => {  const clipboardData = window.clipboardData;  if (clipboardData) {    clipboardData.clearData();    clipboardData.setData("Text", text);    return true;  } else if (document.execCommand) {    const el = document.createElement("textarea");    el.value = text;    el.setAttribute("readonly", "");    el.style.position = "absolute";    el.style.left = "-9999px";    document.body.appendChild(el);    el.select();    document.execCommand("copy");    document.body.removeChild(el);    return true;  }  return false;};copyText("Test");

5. 禁止复制文本

body {  user-select: none;  -moz-user-select: none;  -WEBkit-user-select: none;  -ms-user-select: none;}
// 禁止右键菜单document.body.oncontextmenu = (e) => {  return false;};// 禁止选中文字document.body.onselectstart = (e) => {  return false;};// 禁止复制document.body.oncopy = (e) => {  return false;};// 禁止剪切document.body.oncut = (e) => {  return false;};// 禁止粘贴document.body.onpaste = (e) => {  return false;};

6. 复制文本带版权信息

document.body.oncopy = (event) => {  event.preventDefault();  const clipboardData = event.clipboardData;  let text = window.getSelection(0).toString();  text = `${text}\n这是插入的文本\n 作者:于五五\n`;  if (clipboardData) {    clipboardData.clearData();    clipboardData.setData("Text", text);    return true;  } else if (document.execCommand) {    window.clipboardData.setData("Text", text);  }  return false;};

7. 判断数据类型和数据值

很常用的工具类,用于校验数据是否合法

// 是否是字符串function isString(obj) {  return Object.prototype.toString.call(obj) == "[object String]";}// 是否是数字function isNumber(obj) {  return (    Object.prototype.toString.call(obj) == "[object Number]" &&    /[\d\.]+/.test(String(obj))  );}// 是否是布尔function isBoolean(obj) {  return Object.prototype.toString.call(obj) == "[object Boolean]";}// 是否是数组function isArray(obj) {  return Object.prototype.toString.call(obj) === "[object Array]";}// 是否是对象function isObject(arg) {  if (arg == null) {    return false;  } else {    return Object.prototype.toString.call(arg) == "[object Object]";  }}// 是否是方法function isFunction(arg) {  const type = Object.prototype.toString.call(arg);  return type == "[object Function]" || type == "[object AsyncFunction]";}// 是否是时间格式function isDate(obj) {  return Object.prototype.toString.call(obj) == "[object Date]";}// 是否是时间undefinedfunction isUndefined(arg) {  return arg === void 0;}// 是否是空对象function isEmptyObject(arg) {  if (isObject(arg)) {    for (var key in arg) {      if (Object.prototype.hasOwnProperty.call(arg, key)) {        return false;      }    }    return true;  }  return false;}

8. ua 环境判断

用来区分不同平台,常用在iOS端做适配

const getUainfo = () => {  const ua = navigator.userAgent.toLowerCase();  const Agents = [    "Android",    "android",    "iPhone",    "SymbianOS",    "windows Phone",    "iPad",    "iPod",  ];  let isPc = true;  for (var i = 0; i < Agents.length; i++) {    if (userAgentInfo.includes(Agents[i])) {      isPc = false;      break;    }  }  return {    // 是不是ios    isIos:      !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) || ua.includes("mac os x"),    // 是不是安卓    isAndroid:      ua.includes("android") || ua.includes("Android") || ua.includes("Adr"),    // 是不是微信环境    isWeixin: ua.match(/MicroMessenger/i) == "micromessenger",    // 是不是电脑端    isPc: isPc,  };};

9. 时间格式转换

// Date转yyyy-MM-dd HH:mm:ssconst filterTimeByDate = (date, pattern = "yyyy-MM-dd HH:mm:ss") => {  const o = {    "M+": date.getMonth() + 1,    "d+": date.getDate(),    "H+": date.getHours(),    "m+": date.getMinutes(),    "s+": date.getSeconds(),    "q+": Math.floor((date.getMonth() + 3) / 3),    S: date.getMilliseconds(),  };  if (/(y+)/.test(pattern)) {    pattern = pattern.replace(      RegExp.$1,      (date.getFullYear() + "").substr(4 - RegExp.$1.length)    );  }  for (var k in o) {    if (new RegExp("(" + k + ")").test(pattern)) {      pattern = pattern.replace(        RegExp.$1,        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)      );    }  }  return pattern;};filterTimeByDate(new Date());// 时间戳转yyyy-MM-dd HH:mm:ssconst timestampToTime = (timestamp) => {  const date = new Date(    String(timestamp).length > 10 ? timestamp : timestamp * 1000  ); //时间戳为10位需*1000,时间戳为13位的话不需乘1000  const Y = date.getFullYear() + "-";  const M =    (date.getMonth() + 1 < 10      ? "0" + (date.getMonth() + 1)      : date.getMonth() + 1) + "-";  const D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";  const h =    (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";  const m =    (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()) +    ":";  const s =    date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();  return Y + M + D + h + m + s;};timestampToTime(new Date().getTime());// yyyy-MM-dd HH:mm:ss转时间戳const timeToTimestamp = (time, isMilli = true) => {  const timestamp = new Date(time).getTime(); //时间戳为10位需*1000,时间戳为13位的话不需乘1000  return isMilli ? timestamp : timestamp / 1000;};timeToTimestamp("2022-04-26 10:11:11");

10. 函数防抖

const debounce = (fn, delay) => {  let timer = null;  return function (e) {    clearTimeout(timer);    timer = setTimeout(() => {      fn.apply(this, arguments);    }, delay);  };};document.addEventListener(  "scroll",  debounce(function () {    console.log("执行");  }, 2000));

11. 全屏/退出全屏

function toFullScreen() {  let = document.documentElement;  el.webkitRequestFullScreen    ? el.webkitRequestFullScreen()    : el.mozRequestFullScreen    ? el.mozRequestFullScreen()    : el.msRequestFullscreen    ? el.msRequestFullscreen()    : el.requestFullScreen    ? el.requestFullScreen()    : alert("当前浏览器不支持该功能");}function exitFullscreen() {  let el = document;  el.webkitCancelFullScreen    ? el.webkitCancelFullScreen()    : el.mozCancelFullScreen    ? el.mozCancelFullScreen()    : el.cancelFullScreen    ? el.cancelFullScreen()    : el.msExitFullscreen    ? el.msExitFullscreen()    : el.exitFullscreen    ? el.exitFullscreen()    : alert("当前浏览器不支持该功能");}

12. 禁止打开控制台调试

用来防止部分用户通过源码攻击服务器,增加破解难度

setInterval(function () {  check();}, 4000);const check = () => {  function doCheck(a) {    if (("" + a / a)["length"] !== 1 || a % 20 === 0) {      (function () {}["constructor"]("debugger")());    } else {      (function () {}["constructor"]("debugger")());    }    doCheck(++a);  }  try {    doCheck(0);  } catch (err) {}};check();

13. 密码强度展示

const checkPwd = (str) => {  let Lv = 0;  if (str.length < 6) {    return Lv;  }  if (/[0-9]/.test(str)) {    Lv++;  }  if (/[a-z]/.test(str)) {    Lv++;  }  if (/[A-Z]/.test(str)) {    Lv++;  }  if (/[\.|-|_]/.test(str)) {    Lv++;  }  return Lv;};

14. 五星好评

const getRate = (rate = 0) => {  return "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);};getRate(3);

15. 保留 n 位小数

const filterToFixed => (num, n = 2) {    return parseFloat(num.toFixed(n), 10);}

16. 金额转大写

商城项目里订单模块很常用的工具方法

const convertCurrency = (money) => {  //汉字的数字  const cnNums = new Array(    "零",    "壹",    "贰",    "叁",    "肆",    "伍",    "陆",    "柒",    "捌",    "玖"  );  //基本单位  const cnIntRadice = new Array("", "拾", "佰", "仟");  //对应整数部分扩展单位  const cnIntUnits = new Array("", "万", "亿", "兆");  //对应小数部分单位  const cnDecUnits = new Array("角", "分", "毫", "厘");  //整数金额时后面跟的字符  const cnInteger = "整";  //整型完以后的单位  const cnIntLast = "元";  //最大处理的数字  const maxNum = 999999999999999.9999;  //金额整数部分  let integerNum;  //金额小数部分  let decimalNum;  //输出的中文金额字符串  let chineseStr = "";  //分离金额后用的数组,预定义  let parts;  // 传入的参数为空情况  if (money == "") {    return "";  }  money = parseFloat(money);  if (money >= maxNum) {    return "";  }  // 传入的参数为0情况  if (money == 0) {    chineseStr = cnNums[0] + cnIntLast + cnInteger;    return chineseStr;  }  // 转为字符串  money = money.toString();  // indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无  if (money.indexOf(".") == -1) {    integerNum = money;    decimalNum = "";  } else {    parts = money.split(".");    integerNum = parts[0];    decimalNum = parts[1].substr(0, 4);  }  //转换整数部分  if (parseInt(integerNum, 10) > 0) {    let zeroCount = 0;    let IntLen = integerNum.length;    for (let i = 0; i < IntLen; i++) {      let n = integerNum.substr(i, 1);      let p = IntLen - i - 1;      let q = p / 4;      let m = p % 4;      if (n == "0") {        zeroCount++;      } else {        if (zeroCount > 0) {          chineseStr += cnNums[0];        }        zeroCount = 0;        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];      }      if (m == 0 && zeroCount < 4) {        chineseStr += cnIntUnits[q];      }    }    // 最后+ 元    chineseStr += cnIntLast;  }  // 转换小数部分  if (decimalNum != "") {    let decLen = decimalNum.length;    for (let i = 0; i < decLen; i++) {      let n = decimalNum.substr(i, 1);      if (n != "0") {        chineseStr += cnNums[Number(n)] + cnDecUnits[i];      }    }  }  if (chineseStr == "") {    chineseStr += cnNums[0] + cnIntLast + cnInteger;  } else if (decimalNum == "") {    chineseStr += cnInteger;  }  return chineseStr;};

17. 常用正则判断

// 校验昵称为2-9位中文const validateName = (name) => {  const reg = /^[\u4e00-\u9fa5]{2,9}$/;  return reg.test(name);};// 校验手机号const validateMobile = (mobile) => {  const reg = /^1[3,4,5,6,7,8,9]\d{9}$/;  return reg.test(mobile);};// 校验6到18位大小写字母数字下划线组成的密码const validatePassWord = (password) => {  const reg = /^[a-zA-Z0-9_]{6,18}$/;  return reg.test(password);};// 校验身份证号const validateCardId = (cardId) => {  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;  return reg.test(cardId);};

18. 解决运算精度丢失的问题

用来解决前端计算金额时精度丢失的问题

const calculation = {  // 加法  plus(arg1, arg2) {    var r1, r2, m;    try {      r1 = arg1.toString().split(".")[1].length;    } catch (e) {      r1 = 0;    }    try {      r2 = arg2.toString().split(".")[1].length;    } catch (e) {      r2 = 0;    }    m = Math.pow(10, Math.max(r1, r2));    return (arg1 * m + arg2 * m) / m;  },  //减法  subtract(arg1, arg2) {    var r1, r2, m, n;    try {      r1 = arg1.toString().split(".")[1].length;    } catch (e) {      r1 = 0;    }    try {      r2 = arg2.toString().split(".")[1].length;    } catch (e) {      r2 = 0;    }    m = Math.pow(10, Math.max(r1, r2));    n = r1 >= r2 ? r1 : r2;    return ((arg1 * m - arg2 * m) / m).toFixed(n);  },  //   乘法  multiply(arg1, arg2) {    var m = 0,      s1 = arg1.toString(),      s2 = arg2.toString();    try {      m += s1.split(".")[1].length;    } catch (e) {}    try {      m += s2.split(".")[1].length;    } catch (e) {}    return (      (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /      Math.pow(10, m)    );  },  //   除法  divide(arg1, arg2) {    var t1 = 0,      t2 = 0,      r1,      r2;    try {      t1 = arg1.toString().split(".")[1].length;    } catch (e) {}    try {      t2 = arg2.toString().split(".")[1].length;    } catch (e) {}    r1 = Number(arg1.toString().replace(".", ""));    r2 = Number(arg2.toString().replace(".", ""));    return (r1 / r2) * Math.pow(10, t2 - t1);  },};

关于“高频使用的JS工具有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“高频使用的JS工具有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 高频使用的JS工具有哪些

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 高频使用的JS工具有哪些
    这篇文章主要介绍了高频使用的JS工具有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇高频使用的JS工具有哪些文章都会有所收获,下面我们一起来看看吧。1. 回到顶部较为平滑的回到顶部方案const ...
    99+
    2023-06-30
  • 18个高频使用的JS工具方法总结
    目录前言1. 回到顶部2. 删除数组指定项3. 获取 url 某一个参数4. 复制文本5. 禁止复制文本6. 复制文本带版权信息7. 判断数据类型和数据值8. ua 环境判断9. 时...
    99+
    2024-04-02
  • Python可视化最频繁使用的工具有哪些
    这篇“Python可视化最频繁使用的工具有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python可视化最频繁使用的工...
    99+
    2023-07-05
  • 高效的DevOps工具有哪些
    这篇文章主要介绍“高效的DevOps工具有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“高效的DevOps工具有哪些”文章能帮助大家解决问题。一、微软Microsoft Teams微软Micro...
    99+
    2023-06-27
  • 常见的JS混淆工具有哪些
    这篇文章给大家分享的是有关常见的JS混淆工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为了防止盗版或者至少使盗版更加困难,JS开发者常会使用混淆工具对JS代码进行混淆。...
    99+
    2024-04-02
  • Linux上的音频编辑工具有哪些
    这篇文章将为大家详细讲解有关Linux上的音频编辑工具有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. AudacityAudacity audio editorAudacity 是 Linux ...
    99+
    2023-06-16
  • 免费的HTML视频转换工具有哪些
    本篇内容主要讲解“免费的HTML视频转换工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“免费的HTML视频转换工具有哪些”吧!1. HandbrakeH...
    99+
    2024-04-02
  • 常用的JS格式化在线工具有哪些
    常用的JS格式化在线工具有以下几个:1. JSBeautifier:https://www.jsbeautifier.org/2. ...
    99+
    2023-10-12
    JS
  • js代码格式化工具有哪些
    以下是一些常用的 JavaScript 代码格式化工具:1、PrettierPrettier 是一种流行的代码格式化工具,可以格式化...
    99+
    2023-05-13
    js代码格式化 js
  • vue开发使用的工具有哪些
    这篇“vue开发使用的工具有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue开发使用的工具有哪些”文章吧。vue开发...
    99+
    2023-07-04
  • web开发者使用的工具有哪些
    本文小编为大家详细介绍“web开发者使用的工具有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“web开发者使用的工具有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  一、Java 线上诊断工具 Art...
    99+
    2023-06-02
  • 最有用的CSS工具有哪些
    本篇内容主要讲解“最有用的CSS工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“最有用的CSS工具有哪些”吧!1. SkyblueSkyblue是一个启...
    99+
    2024-04-02
  • Linux的常用工具有哪些
    本篇内容主要讲解“Linux的常用工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的常用工具有哪些”吧!01日志工具1logdissect   &...
    99+
    2023-06-05
  • Linux的实用工具有哪些
    本文小编为大家详细介绍“Linux的实用工具有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux的实用工具有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. w对,你没看错,就是 w 命令。使用...
    99+
    2023-06-27
  • 好用的CSS工具有哪些
    这篇文章主要为大家展示了“好用的CSS工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“好用的CSS工具有哪些”这篇文章吧。CSS问题检查工具:CSS L...
    99+
    2024-04-02
  • 好用的Linux工具有哪些
    这篇文章主要介绍好用的Linux工具有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!好用的Linux工具ag:比grep、ack更快的递归搜索文件内容。tig:字符模式下交互查看git项目,可以替代git命令。m...
    99+
    2023-06-16
  • Java有哪些好用的工具
    这篇文章主要介绍“Java有哪些好用的工具”,在日常操作中,相信很多人在Java有哪些好用的工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java有哪些好用的工具”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-16
  • 巨好用的Java程序员高效工具有哪些
    这篇文章主要介绍“巨好用的Java程序员高效工具有哪些”,在日常操作中,相信很多人在巨好用的Java程序员高效工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”巨好用的Java程序员高效工具有哪些”的疑...
    99+
    2023-06-15
  • web前端使用的调试工具有哪些
    本篇内容介绍了“web前端使用的调试工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 有哪些Python工具
    本篇内容主要讲解“有哪些Python工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Python工具”吧!Python 是一种开源编程语言,用于 Web 编程、数据科学、人工智能和许多科...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作