当前位置: 代码网 > it编程>编程语言>Javascript > 「终极收藏」前端开发必备:超全JavaScript公共方法大全

「终极收藏」前端开发必备:超全JavaScript公共方法大全

2024年07月28日 Javascript 我要评论
在前端开发中,JavaScript是必不可少的一部分,而掌握各种常用的公共方法更是提升开发效率和代码质量的关键。本篇博客将为你详细汇总并解析最全的JavaScript公共方法,涵盖数组、对象、字符串、日期等各个方面的常用技巧。希望通过这篇文章,能为你的前端开发之路提供有力的帮助,成为你开发过程中不可或缺的参考指南。我已经将所有公共方法,按模块的形式,集成到了js-tool-big-box工具包中,大家不比担心安装后会使项目体积变大,不会的。想要使用时间日期类的公共方法,需要先在项目中导入。

目录

引言

1 安装js-tool-big-box工具包

1.1 安装

1.2 截至目前的方法集合 

2 时间日期类 

2.1 更灵活的年月日时分秒

2.2 日期时间转换

2.3 个性的时间组合 

2.4  某个时间距离现在

2.5  平年还是闰年

2.6 指定月份的天数 

2.7 属相

2.8 获取指定年份的法定节假日 

3 页面存储类

3.1 获取浏览器url参数值

3.2 设置cookie

3.3 获取cookie

3.4 删除cookie

3.5 设置localstorage

3.6 获取localstorage的值

4 事件相关

 4.1 防抖

4.2 节流

5 number相关方法学习

5.1 千分号分割

5.2  判断是否大于0

5.3 判断是否大于0的整数

5.4 生成指定范围内的随机数

5.5  生成指定位数的随机数

5.6 数字转小写中文

5.7 数字转大写中文

6 字符串相关方法学习

6.1 字符串反转

6.2 横岗转小驼峰

6.3 横岗转大驼峰

6.4 版本号比较

6.5 获取字符串字节长度

6.6 生成uuid

6.7 通过身份证号获取生日、性别和年龄

6.8 字符串中间加星号遮盖

7 正则验证相关方法学习

7.1 邮箱验证

7.2 手机号验证

7.3 url格式验证

7.4 身份证号码格式验证

7.5 ip地址格式验证

7.6 邮政编码验证

7.7 是否unicode字符

8 发送请求相关

8.1 发送jsonp跨域请求

9  data数据相关方法学习

9.1 获取幸运者

9.2 复制文字到剪贴板

9.3 数组去重

10 浏览器相关 

10.1 判断是否手机端浏览器

10.2 检测某个元素是否处于可视范围内

最后


引言

在前端开发中,javascript是必不可少的一部分,而掌握各种常用的公共方法更是提升开发效率和代码质量的关键。无论你是初学者还是资深开发者,了解并熟练运用这些方法都能让你的代码更加简洁、高效。本篇博客将为你详细汇总并解析最全的javascript公共方法,涵盖数组、对象、字符串、日期等各个方面的常用技巧。希望通过这篇文章,能为你的前端开发之路提供有力的帮助,成为你开发过程中不可或缺的参考指南。

下面开始啦,建议收藏起来,前端开发项目必备。

1 安装js-tool-big-box工具包

1.1 安装

我已经将所有公共方法,按模块的形式,集成到了js-tool-big-box工具包中,大家不比担心安装后会使项目体积变大,不会的。

执行安装命令:

npm包地址:js-tool-big-box - npm (npmjs.com) 包中提供了工具的学习文档地址以及作者

1.2 截至目前的方法集合 

 那么js-tool-big-box这个方法库现在都有哪些公共方法可以供大家使用了呢,我们看一下下面的图就知道啦

2 时间日期类 

想要使用时间日期类的公共方法,需要先在项目中导入 timebox 对象,所有的时间日期类方法都在这个对象下面,引入代码如下:

import { timebox } from 'js-tool-big-box';

2.1 更灵活的年月日时分秒

    const year = timebox.getmyyear(null, '年');
    console.log(year); // 2024年
    const yearalb = timebox.getmyyear(null, 'سنة');
    console.log(yearalb); // 2024سنة
    const month = timebox.getmymonth(null, '月');
    console.log(month); // 05月
    const date = timebox.getmydate(null);
    console.log(date); // 23
    const hour = timebox.getmyhour(null, 'hour');
    console.log(hour); // 20hour
    const minutes = timebox.getmyminutes(null, 'min');
    console.log(minutes); // 10min
    const seconds = timebox.getmyseconds(null, '秒');
    console.log(seconds); // 10秒

2.2 日期时间转换

    const datetime1 = timebox.getfulldatetime(null, 'yyyy-mm-dd', '/');
    console.log(datetime1); // 2024/05/22
    const datetime2 = timebox.getfulldatetime(null, 'yyyy-mm-dd hh:mm', '~');
    console.log(datetime2); // 2024`05`22 20:11
    const datetime3 = timebox.getfulldatetime(null, 'yyyy-mm-dd hh:mm:ss');
    console.log(datetime3); // 2024-05-22 20:11:22

2.3 个性的时间组合 

const hourshow= timebox.getmydate(null, '点');
const minshow= timebox.getmyminutes(null, '分');
const timeshow = `${hourshow} ${minshow}`; // 8点 22分

2.4  某个时间距离现在

const unitobj = {
      beforeunit: 'before',
      afterunit: 'after',
      yearunit: 'year',
      monthunit: 'month',
      dateunit: ' days ',
      hourunit: 'hour',
      minutesunit: 'min',
      secondunit: 'sec'
    }
    const showdata = timebox.getdistancenow('1908-12-02 06:00:00', unitobj); // 溥仪登基啦
    console.log('溥仪登基详细时间===', showdata); 
    const showdata1 = timebox.getdistancenow('2030-04-19 20:15:59');  // 移民火星啦
    console.log('人类移民火星详细时间===', showdata1);

注意:这个方法返回的是详细的时间对象,需要甄别使用哪个具体的详细信息。

2.5  平年还是闰年

    const leapyear = timebox.getleapyear('2024-12');
    console.log('=-=2024年是', leapyear ? '闰年': '平年'); // 闰年
    const leapyear1 = timebox.getleapyear('2019'); 
    console.log('=-=2019年是', leapyear1 ? '闰年': '平年'); // 平年
    const leapyear2 = timebox.getleapyear(null); 
    console.log('=-=今年是', leapyear2 ? '闰年': '平年'); // 闰年

2.6 指定月份的天数 

      const days = timebox.getdaysinmonth('2023', 11);
      console.log('2023年12月的天数===', days); // 31
      const days1 = timebox.getdaysinmonth(null, 1);
      console.log('今年2月的天数===', days1);   // 29

2.7 属相

      const bornanimal = timebox.getanimalofborn('2025');
      console.log('2025年出生的人属相是:==-==', bornanimal); // snake
      const bornanima2 = timebox.getanimalofborn('1990-10-25');
      console.log('1990年出生的人属相是:==-==', bornanima2); // house

2.8 获取指定年份的法定节假日 

const holiday2024 = timebox.getholiday('2024');
console.log('----', holiday2024);

注意:这个方法只能获取2024年以后的法定节假日显示 

3 页面存储类

 页面存储包含获取浏览器url的参数,cookie设置、获取、删除等,localstorage的设置,获取等。想使用存储类的公共方法,需要先在项目中导入 storebox 对象:

import { storebox } from 'js-tool-big-box';

3.1 获取浏览器url参数值

const param = storebox.geturlparam('q');
console.log('获取到q的参数为:::', param); // my2521

3.2 设置cookie

storebox.setcookie('school', '我的中学', 1000*10);
storebox.setcookie('name', 'zhangsan');

3.3 获取cookie

const mycookie1 = storebox.getcookie('school');
console.log('我设置过的school是::', mycookie1); // 我的中学

3.4 删除cookie

storebox.deletecookie('name');
const mynmaecookie = storebox.getcookie('name');
console.log('我已把name这个cookie删了::', mynmaecookie);

3.5 设置localstorage

storebox.setlocalstorage('today', '星期一', 1000*6);

3.6 获取localstorage的值

const today = storebox.getlocalstorage('today');
console.log('6秒后获取的值===', today);

4 事件相关

 目前事件相关的公共方法主要是有防抖和节流2个,需要现在项目中导入 eventbox 对象:

import { eventbox } from 'js-tool-big-box';

 4.1 防抖

<template>
  <div>
    <input @keyup="handlechange" v-model="inputval" />
  </div>
</template>
 
<script>
import { eventbox } from 'js-tool-big-box';
 
export default {
  name: 'dj',
  data () {
    return {
      inputval: ''
    }
  },
 
    created() {
        this.mydebounce = eventbox.debounce((data) => {
          this.sendajax(data);
        }, 2000);
      },
 
methods: {
    handlechange(event) {
      const val = event.target.value;
      this.mydebounce(val);
    },
    sendajax(data) {
      console.log('发送时间::', new date().gettime());
      console.log('发送请求:', data);
    },
  }
}
</script>

4.2 节流

<script>
import { eventbox } from 'js-tool-big-box';
 
export default {
  name: 'dj',
  data () {
    return {
      inputval: ''
    }
  },
  created() {
    this.mythrottle = eventbox.throttle((data) => {
      this.sendajax(data);
    }, 2000);
  },
  methods: {
    handlechange(event) {
      const val = event.target.value;
      this.mythrottle(val);
    },
    sendajax(data) {
      console.log('发送时间::', new date().gettime());
      console.log('发送请求:', data);
    },
  }
}
</script>

5 number相关方法学习

工具库也提供了number相关的方法学习,需要先在项目中导入 numberbox  对象:

import { numberbox } from 'js-tool-big-box';

5.1 千分号分割

const num1 = numberbox.formatnumberwithcommas(13498345.333, 2);
console.log('num1转化后:', num1); // 13,498,345.33
const num11 = numberbox.formatnumberwithcommas(13498345.333);
console.log('num11转化后:', num11); // 13,498,345

5.2  判断是否大于0

const num2 = numberbox.isgreater0('-33.23');
    console.log('-33.23是大于0的数字吗?', num2); // false
    const num3 = numberbox.isgreater0('33.23s'); 
    console.log('33.23s是大于0的数字吗?', num3); // false
    const num33 = numberbox.isgreater0(2024); 
    console.log('2024是大于0的数字吗?', num33); // true

5.3 判断是否大于0的整数

const num4 = numberbox.isgreater0integer('33.23');
    console.log('33.23是大于0的整数吗?', num4);  // false
    const num5 = numberbox.isgreater0integer(99);
    console.log('99是大于0的整数吗?', num5);  // true

5.4 生成指定范围内的随机数

// 生成80到100的随机整数
const num6 = numberbox.getrandomnumber(80, 100);
console.log('80到100的随机整数::', num6); // 86
// 生成50到56并带有2位小数的随机数
const num7 = numberbox.getrandomnumber(50, 56, 2);
console.log('50到56并带有2位小数的随机数::', num7); // 55.57

5.5  生成指定位数的随机数

// 生成一个4位的随机数字
const num66 = numberbox.generateuniquerandomnumber(4);
console.log('生成的4位的随机数字:', num66); // 6257
// 生成一个6位的随机数字
const num77 = numberbox.generateuniquerandomnumber(6);
console.log('生成的6位的随机数字:', num77); // 371420

5.6 数字转小写中文

const num8 = numberbox.numbertochinese('456788.12');
    console.log('看一下456788.12的中文小写展示:', num8);
    const num9 = numberbox.numbertochinese(122456788.5);
    console.log('看一下122456788.5的中文小写展示:', num9);

5.7 数字转大写中文

const num10 = numberbox.numbertochinese(22456788.5, 'upper');
console.log('看一下22456788.5的中文大写展示:', num10);

6 字符串相关方法学习

 字符串相关的方法呢,js-tool-big-box工具库对外提供了 stringbox 对象,可供开发者使用:

import { stringbox } from 'js-tool-big-box';

6.1 字符串反转

const string1 = stringbox.reversestring('hello, world!');
console.log('需要反转的字符串::', string1);

6.2 横岗转小驼峰

const string2 = stringbox.hyphentocamelcase('my-class-name', 'small');
console.log('小驼峰转换::', string2);

6.3 横岗转大驼峰

const string3 = stringbox.hyphentocamelcase('my-class-name', 'big');
console.log('大驼峰转换::', string3);

6.4 版本号比较

const versionresult = stringbox.compareversions('1.0.21', '1.0.12');
console.log('1.0.21和1.0.12比较:', versionresult); // 1
const versionresult1 = stringbox.compareversions('1.2.21', '1.3.12');
console.log('1.2.21和1.3.12比较:', versionresult1); // -1
const versionresult2 = stringbox.compareversions('1.1.3', '1.1.3.1');
console.log('1.1.3和1.1.3.1比较:', versionresult2); // -1
const versionresult3 = stringbox.compareversions('1.1.3', '1.1.3');
console.log('1.1.3和1.1.3比较:', versionresult3); // 0

6.5 获取字符串字节长度

注意:这里不是获取字符串的长度,是字节长度,注意区分

const str1 = 'hello world!!!';
const str2 = '我是the first one,😶 haha~';
const str1bytelength = stringbox.bytelength(str1);
const str2bytelength = stringbox.bytelength(str2);
console.log('hello world!!!的字节长度是:', str1bytelength); // 14
console.log('我是the first one,😶 haha~:', str2bytelength); // 30

6.6 生成uuid

const myuuid1 = stringbox.generateuuid();
console.log('获取到的uuid值第一次', myuuid1);
// 8a556cd8-4c53-38dd-149d-38a32fe27cb9

6.7 通过身份证号获取生日、性别和年龄

const cardstr = '53010219200508011xf';
const idcardobj = stringbox.getinfobyidcard(cardstr);
console.log('此人身份详情:', idcardobj);

6.8 字符串中间加星号遮盖

const cardstr = '53010219200508011x';
const phone = '13344445555';
const cardstrmask = stringbox.maskstring(cardstr, 4, 4, '*', 6);
const phonemask = stringbox.maskstring(phone, 4, 4, '*', 3);
console.log('身份证号加星后为:', cardstrmask);
console.log('手机号加星后为:', phonemask);

7 正则验证相关方法学习

之前我们经常需要写正则表达式做一些验证,现在好了,我们有了公共方法,再也不用四处找去了,工具库提供了 matchbox  对象

import { matchbox } from 'js-tool-big-box';

7.1 邮箱验证

const email1 = '232322@qq.com';
const email2 = '232322qq.ff';
const emailresult1 = matchbox.email(email1);
const emailresult2 = matchbox.email(email2);
console.log('emailresult1验证结果:', emailresult1); // true
console.log('emailresult2验证结果:', emailresult2); // false

7.2 手机号验证

const phone1 = '13813313212';
    const phone2 = '2381331320';
    const phoneresult1 = matchbox.phone(phone1);
    const phoneresult2 = matchbox.phone(phone2);
    console.log('phoneresult1验证结果:', phoneresult1); // true
    console.log('phoneresult2验证结果:', phoneresult2); // false

7.3 url格式验证

const url1 = 'https://aa.test.com/user?q=3';
    const url2 = '//33.co m/ user';
    const urlresult1 = matchbox.url(url1);
    const urlresult2 = matchbox.url(url2);
    console.log('urlresult1验证结果:', urlresult1); // true
    console.log('urlresult2验证结果:', urlresult2); // false

7.4 身份证号码格式验证

const idcard1 = '120333199007712322x';
    const idcard2 = '220333299007712322';
    const idcardresult1 = matchbox.idcard(idcard1);
    const idcardresult2 = matchbox.idcard(idcard2);
    console.log('idcardresult1验证结果:', idcardresult1); // false
    console.log('idcardresult2验证结果:', idcardresult2); // true

7.5 ip地址格式验证

const ip1 = '192.168.1.111';
    const ip2 = '333.168.299.0';
    const ipresult1 = matchbox.ip(ip1);
    const ipresult2 = matchbox.ip(ip2);
    console.log('ipresult1验证结果:', ipresult1); // true
    console.log('ipresult2验证结果:', ipresult2); // false

7.6 邮政编码验证

const postal1 = '075616';
    const postal2 = '956s6';
    const postalresult1 = matchbox.postal(postal1);
    const postalresult2 = matchbox.postal(postal2);
    console.log('postalresult1验证结果:', postalresult1); // true
    console.log('postalresult2验证结果:', postalresult2); // false

7.7 是否unicode字符

    const code1 = 'a';
    const code2 = '😶';
    const code3 = '🧚‍♂️';
    const code1result = matchbox.checkunicode(code1);
    const code2result = matchbox.checkunicode(code2);
    const code3result = matchbox.checkunicode(code3);
    console.log('a是不是一个unicode character?', code1result);
    console.log('😶是不是一个unicode character?', code2result);
    console.log('🧚‍♂️是不是一个unicode character?', code3result);

8 发送请求相关

 目前正常的ajax还没有整理,fetch有自己的请求方法,很好用,所以这里只是封装了jsonp请求的公共方法,js-tool-big-box对外供了 ajaxbox 对象供开发者使用:

import { ajaxbox } from 'js-tool-big-box';

8.1 发送jsonp跨域请求

ajaxbox.sendjsonp('http://127.0.0.1:3000/users/bar', 'callback', function(data){
      console.log('获取到的jsonp请求数据', data);
});

9  data数据相关方法学习

data这里就内容会慢慢比较多,逐渐去丰富,工具库对外提供了 databox 方法供开发者使用:

import { databox } from 'js-tool-big-box';

9.1 获取幸运者

const peopledata = '张三0, 张三1, 张三2, 张三3, 张三4, 张三5, 张三6, 张三7, 张三8, 张三9, 张三10, 张三11, 张三12, 张三13, 张三14, 张三15, 张三16, 张三17, 张三18, 张三19, 张三20, 张三21, 张三22, 张三23, 张三24, 张三25, 张三26, 张三27, 张三27, 张三29, 张三30, 张三31, 张三32, 张三33, 张三34, 张三35, 张三36, 张三37, 张三38, 张三39, 张三40';

this.luckpeople = databox.luck(peopledata, 3);

9.2 复制文字到剪贴板

const text = '我在csdn写工具,js-tool-big-box';
databox.copytext(text, () => {
        // 复制成功后的业务逻辑
      }, () => {
        // 复制异常后的业务逻辑
      }

9.3 数组去重

const arr1 = [1, 2, 3, 5, 1, 2, 3, 4];
const arr2 = [1, 2, 'jim', '1', 'tom', 1, '张三', 2, '3'];
const uniquearr1 = databox.uniquearray(arr1);
const uniquearr2 = databox.uniquearray(arr2);
console.log('去重后的arr1的值为:', uniquearr1);
// [1, 2, 3, 5, 4]
console.log('去重后的arr2的值为:', uniquearr2);
// [1, 2, 'jim', '1', 'tom', '张三', '3']

10 浏览器相关 

公共方法,怎么能少的了浏览器相关的内容呢,js-tool-big-box对外提供了 browserbox 对象供开发者使用:

import { browserbox } from 'js-tool-big-box';

10.1 判断是否手机端浏览器

const checkbrowser = browserbox.ismobilebrowser();
console.log('当前是手机端浏览器吗?', checkbrowser);

 

10.2 检测某个元素是否处于可视范围内

mounted() {
    window.addeventlistener('scroll', this.handlescroll);
  },
  methods: {
    handlescroll() {
      const isinscreen = browserbox.iselementinviewport('.demo');
      console.log('.demo在可视区域内吗?', isinscreen);
    },
  }

最后

今天的javascript公共方法就总结到这里,已经上万字了,我为大家总结了js-tool-big-box的详细学习api和讲解说明,大家需要的可以去学习哦 :

npm包的地址: js-tool-big-box - npm (npmjs.com)

git代码仓库地址:js-tool-big-box仓库地址

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com