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

最近写博客好累,让8月征文活动搞的,今天水一篇好了,麻烦不要给我点赞,不想看到消息通知的小红点。

1. 获取文件后缀名

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

/*** 获取文件后缀名* @param {String} filename*/export function getExt(filename) {if (typeof filename == 'string') {return filename.split('.').pop().toLowerCase()} else {throw new Error('filename must be a string type')}
}
复制代码

使用方式

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

2. 复制内容到剪贴板

export function copyToBoard(value) {const element = document.createElement('textarea')document.body.appendChild(element)element.value = valueelement.select()if (document.execCommand('copy')) {document.execCommand('copy')document.body.removeChild(element)return true}document.body.removeChild(element)return false
}复制代码

使用方式:

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

原理:

  1. 创建一个textare元素并调用select()方法选中

  2. document.execCommand('copy')方法,拷贝当前选中内容到剪贴板。

3. 休眠多少毫秒

/*** 休眠xxxms* @param {Number} milliseconds*/
export function sleep(ms) {return new Promise(resolve => setTimeout(resolve, ms))
}//使用方式
const fetchData=async()=>{await sleep(1000)
}
复制代码

4. 生成随机字符串

/*** 生成随机id* @param {*} length* @param {*} chars*/
export function uuid(length, chars) {chars =chars ||'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'length = length || 8var result = ''for (var i = length; i > 0; --i)result += chars[Math.floor(Math.random() * chars.length)]return result
}
复制代码

使用方式

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

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

5. 简单的深拷贝

/***深拷贝* @export* @param {*} obj* @returns*/
export function deepCopy(obj) {if (typeof obj != 'object') {return obj}if (obj == null) {return obj}return JSON.parse(JSON.stringify(obj))
}
复制代码

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

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

6. 数组去重

/*** 数组去重* @param {*} arr*/
export function uniqueArray(arr) {if (!Array.isArray(arr)) {throw new Error('The first parameter must be an array')}if (arr.length == 1) {return arr}return [...new Set(arr)]
}
复制代码

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

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

7. 对象转化为FormData对象

/*** 对象转化为formdata* @param {Object} object*/export function getFormData(object) {const formData = new FormData()Object.keys(object).forEach(key => {const value = object[key]if (Array.isArray(value)) {value.forEach((subValue, i) =>formData.append(key + `[${i}]`, subValue))} else {formData.append(key, object[key])}})return formData
}
复制代码

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

使用方式:

let req={file:xxx,userId:1,phone:'15198763636',//...
}
fetch(getFormData(req))
复制代码

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

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

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

关于本文

来源:_红领巾

https://juejin.cn/post/6999391770672889893

1. JavaScript 重温系列(22篇全)

2. ECMAScript 重温系列(10篇全)

3. JavaScript设计模式 重温系列(9篇全)

4. 正则 / 框架 / 算法等 重温系列(16篇全)

5. Webpack4 入门(上)|| Webpack4 入门(下)

6. MobX 入门(上) ||  MobX 入门(下)

7. 120+篇原创系列汇总

回复“加群”与大佬们一起交流学习~

点击“阅读原文”查看 120+ 篇原创文章

【JS】1070- 8个工程必备的JavaScript代码片段(建议添加到项目中)相关推荐

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

    点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量.???? 最近写博客好累,让8月征文活动搞的, ...

  2. 16个工程必备的JavaScript代码片段

    作者:_红领巾 https://juejin.cn/post/7000919400249294862 1. 下载一个excel文档 同时适用于word,ppt等浏览器不会默认执行预览的文档,也可以用于 ...

  3. 16个必备的JavaScript代码片段

    1. 下载一个excel文档 同时适用于word,ppt等浏览器不会默认执行预览的文档,也可以用于下载后端接口返回的流数据,见3 //下载一个链接 function download(link, na ...

  4. 18个项目必备的JavaScript代码片段——数组篇

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,目前近3000人参与,0-5年工作经验的都可以参与学习. 1.chunk转换二维数组 将数组(array)拆 ...

  5. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具

    运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...

  6. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 ...

  7. JavaScript 代码片段

    近期在GitHub上看到一位叫Chalarangelo的用户写了一篇30 秒就能理解的 JavaScript 代码片段,很多人都在看,下面分享一些他的JS用法. 给定一个 key 和一个 set 作为 ...

  8. 收集 48 个 JavaScript 代码片段,仅需 30 秒就可理解(值得收藏)

    该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 5000 多Star,精心收集了多达 48 个有用的 JavaScript 代码片段,该用户的代码可以让程 ...

  9. JavaScript代码片段

    简介:本文收集了我常用的JavaScript代码片段,欢迎提意见! 大灰狼边敲门边说:"小兔子乖乖,把门儿开开!" 小兔子听到后,连忙去开门:"来喽!" 兔妈妈 ...

最新文章

  1. Solr环境搭建及IK分词的集成及solrJ的调用(一)
  2. 五行塔怎么吃第五个_红毛丹怎么吃 吃红毛丹的五个好处
  3. 天气情况(思维,dp思想)
  4. 采用DCO-OFDM的VLC系统
  5. Golang 单元测试:有哪些误区和实践?
  6. Oracle 常用伎俩和剧本
  7. java里shake是什么意思_shake是什么意思_shake在线翻译_英语_读音_用法_例句_海词词典...
  8. 关于CSDN官方对博文点赞漏洞的处理(Cookie劫持攻击)
  9. SQL Transcation的一些总结
  10. 利用EEPROM实现arduino的断电存储
  11. ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation
  12. Linux 内存管理之 SLUB分配器(1): Object-layout
  13. 可视化:这十个数据可视化工具软件平台你必须知道
  14. 电力-输配电知识汇总
  15. 面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书
  16. 网易易盾首席产品风控官imlolo分享对社交业务安全风控的认知和思考
  17. 2018级《程序设计基础(B)II》期末上机考试 重现--SDUT
  18. pycharm2017.3.3破解到2099年
  19. 微信小程序自定义map组件标记点markers(兼容苹果和安卓)
  20. 工业4.0万物联网兴起 智能手机或将消亡

热门文章

  1. 哪个软件可以用来python编程_python编程用哪个软件
  2. Wireless Communication学习笔记-路径损耗,阴影和多径效应
  3. 最强S60直板机王!诺基亚N系列三代N73(转载)
  4. 判断CStdioFile的类成员有没有打开
  5. 对抗神经网络之对抗卷积神经网络[2]
  6. 培训第一天网页设计知识点
  7. 将Python文件转化为exe文件
  8. 有一个程序媛女友/老婆是什么样的体验?
  9. 软件工程中设计文档的重要性
  10. 分享雅虎前端优化军规