八个工程必备的JavaScript代码片段(建议添加到项目中)

开发 前端
8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量。

[[432011]]

 1. 获取文件后缀名

使用场景:上传文件判断后缀名 

  1. /**  
  2.  * 获取文件后缀名  
  3.  * @param {String} filename  
  4.  */  
  5.  export function getExt(filename) {  
  6.     if (typeof filename == 'string') {  
  7.         return filename  
  8.             .split('.')  
  9.             .pop()  
  10.             .toLowerCase()  
  11.     } else {  
  12.         throw new Error('filename must be a string type')  
  13.     }  
  14.  
  15. 复制代码 

使用方式 

  1. getExt("1.mp4") //->mp4  
  2. 复制代码 

2. 复制内容到剪贴板 

  1. export function copyToBoard(value) {  
  2.     const element = document.createElement('textarea')  
  3.     document.body.appendChild(element)  
  4.     element.value = value  
  5.     element.select()  
  6.     if (document.execCommand('copy')) {  
  7.         document.execCommand('copy')  
  8.         document.body.removeChild(element)  
  9.         return true  
  10.     }  
  11.     document.body.removeChild(element)  
  12.     return false  
  13. 复制代码

使用方式: 

  1. //如果复制成功返回true  
  2. copyToBoard('lalallala')  
  3. 复制代码 

原理:

  1.  创建一个textare元素并调用select()方法选中
  2.  document.execCommand('copy')方法,拷贝当前选中内容到剪贴板。

3. 休眠多少毫秒 

  1. /**  
  2.  * 休眠xxxms  
  3.  * @param {Number} milliseconds  
  4.  */  
  5. export function sleep(ms) {  
  6.     return new Promise(resolve => setTimeout(resolve, ms))  
  7.  
  8. //使用方式  
  9. const fetchData=async()=> 
  10.  await sleep(1000)  
  11.  
  12. 复制代码 

4. 生成随机字符串 

  1. /**  
  2.  * 生成随机id  
  3.  * @param {*} length  
  4.  * @param {*} chars  
  5.  */  
  6. export function uuid(length, chars) {  
  7.     charschars =  
  8.         chars ||  
  9.         '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'  
  10.     lengthlength = length || 8  
  11.     var result = ''  
  12.     for (var i = length; i > 0; --i)  
  13.         result += chars[Math.floor(Math.random() * chars.length)]  
  14.     return result  
  15.  
  16. 复制代码 

使用方式 

  1. //第一个参数指定位数,第二个字符串指定字符,都是可选参数,如果都不传,默认生成8位  
  2. uuid()   
  3. 复制代码 

使用场景:用于前端生成随机的ID,毕竟现在的Vue和React都需要绑定key

5. 简单的深拷贝 

  1. /**  
  2.  *深拷贝  
  3.  * @export  
  4.  * @param {*} obj  
  5.  * @returns  
  6.  */  
  7. export function deepCopy(obj) {  
  8.     if (typeof obj != 'object') {  
  9.         return obj  
  10.     }  
  11.     if (obj == null) {  
  12.         return obj  
  13.     }  
  14.     return JSON.parse(JSON.stringify(obj))  
  15.  
  16. 复制代码 

缺陷:只拷贝对象、数组以及对象数组,对于大部分场景已经足够 

  1. const person={name:'xiaoming',child:{name:'Jack'}}  
  2. deepCopy(person) //new person  
  3. 复制代码 

6. 数组去重 

  1. /**  
  2.  * 数组去重  
  3.  * @param {*} arr 
  4.  */  
  5. export function uniqueArray(arr) {  
  6.     if (!Array.isArray(arr)) {  
  7.         throw new Error('The first parameter must be an array')  
  8.     }  
  9.     if (arr.length == 1) {  
  10.         return arr  
  11.     }  
  12.     return [...new Set(arr)]  
  13.  
  14. 复制代码 

原理是利用Set中不能出现重复元素的特性 

  1. uniqueArray([1,1,1,1,1])//[1]  
  2. 复制代码 

7. 对象转化为FormData对象 

  1. /**  
  2.  * 对象转化为formdata  
  3.  * @param {Object} object  
  4.  */  
  5.  export function getFormData(object) {  
  6.     const formData = new FormData()  
  7.     Object.keys(object).forEach(key => {  
  8.         const value = object[key]  
  9.         if (Array.isArray(value)) {  
  10.             value.forEach((subValue, i) =>  
  11.                 formData.append(key + `[${i}]`, subValue)  
  12.             )  
  13.         } else {  
  14.             formData.append(key, object[key])  
  15.         }  
  16.     })  
  17.     return formData  
  18.  
  19. 复制代码 

使用场景:上传文件时我们要新建一个FormData对象,然后有多少个参数就append多少次,使用该函数可以简化逻辑

使用方式: 

  1. let req={  
  2.     file:xxx, 
  3.     userId:1,  
  4.     phone:'15198763636',  
  5.     //...  
  6.  
  7. fetch(getFormData(req))  
  8. 复制代码 

8.保留到小数点以后n位 

  1. // 保留小数点以后几位,默认2位  
  2. export function cutNumber(number, no = 2) {  
  3.     if (typeof number != 'number') {  
  4.         number = Number(number)  
  5.     }  
  6.     return Number(number.toFixed(no))  
  7.  
  8. 复制代码 

使用场景:JS的浮点数超长,有时候页面显示时需要保留2位小数。

 

责任编辑:庞桂玉 来源: 前端教程
相关推荐

2021-09-03 10:08:53

JavaScript开发 代码

2022-07-25 15:21:50

Java编程语言开发

2024-08-02 17:19:36

2013-09-05 13:49:18

WordPress速度

2016-09-19 15:15:01

shellbash脚本

2021-09-27 15:04:08

数字化转型CIOIT

2024-01-26 06:25:09

PyCharm插件代码

2023-10-10 16:16:05

JavaScrip开发

2023-10-09 14:48:06

2023-05-22 15:53:06

JavaScrip代码素材

2011-07-11 10:16:07

JavaScript

2013-06-07 10:52:18

移动应用移动产品设计

2021-06-29 10:03:45

数据科学机器学习算法

2023-11-13 10:11:49

开源前端

2024-06-21 11:02:16

2023-05-03 21:42:02

Github开源项目

2022-06-13 09:00:33

React 项目前端

2020-08-30 14:40:34

首席信息官IT领导者倦怠

2012-10-24 14:17:25

2022-03-18 21:27:36

Python无代码
点赞
收藏

51CTO技术栈公众号