今天笔者整理了一份自己最近用到的一些小技巧分享给大家,虽然都是基础技术,不过在某些特殊时刻还蛮有用的,不至于加载一堆体积庞大的第三方库。今天笔者用本文归纳一下分享给大家。本篇文章主要包含以下内容:

  • 产生随机不重复ID
  • 模板标签替换
  • 字符串与xml的互转
  • 快速取整数

本篇文章预计时间3分钟

产生随机不重复ID

有时候在没有第三方类库的情况下,我们希望希望产生随机且不重复的ID,这时我会使用「随机数」搭配「时间戳」的方式,首先使用Math.random()产生0~1之间约16~17位数的随机浮点数,再通过toString(36)的方法缩短其位数,并转换为36进位( 0~9、a~z ),若嫌太长还可用substr方法进行自行截取。

Math.random().toString(36).substr(2,n);// 截取小数点后的部分,n在实际应用中修改成你需要的位数

第二步使用Date.now()取得目前的毫秒数,总共有13位数,和上个方法一样我们通过toString(36)的方法缩短其位数,并转换为36进位,接着用substr自行截取需要的位数。

Date.now().toString(36).substr(4,n);//由于前几位固定,我们从第5位开始进去截取获取随机数,n在实际应用中修改成你需要的位数

将随机数的片段和时间戳的片段进行组合,就能产生一个随机不重复的id 。( 应该说重复机率低到不可能重复,如果你遇到重复的,恭喜你,建议你今天买彩票 )

Math.random().toString(36).substr(2,n) + Date.now().toString(36).substr(4,n);

模板标签替换

开发过程中有时会遇到要取出一段文字中的某些值,如果单纯只是要「替换成别的值」,使用replace()的方法就能轻松实现,对以下这段字符串来说,里面有几个利用{{}}包覆的标签需要你替换,你会怎么做呢:

大家好,我的公众号是{{name}},今年{{age}}岁了,创建于{{year}}年,欢迎你的关注

如果想要把所有「{{}}」两个大括号内的字替换成对应的值,可以通过以下的方式进行处理,核心的内容就是replace()方法里的正规表达式/{{(.*?)}}/g,/{|}/g:

const text = '大家好,我的公众号是{{name}},今年{{age}}岁了,创建于{{year}}年,欢迎你的关注’;const obj = { name: '前端达人', age: 5, year: 2014};const result = text.replace(/{{(.*?)}}/g, e => { return obj[e.replace(/{|}/g,'')];});

得到的结果就会是:「大家好,我的公众号是前端达人,今年5岁了,创建于2014年,欢迎你的关注」。

String 转 XML、XML 转 String

在JavaScript里如果直接读取XML,得到的会是一些XML节点构成的对象,如果要使用像是replace()..等字串的操作就必须转换成字串String才行,下方程式可以很简单的将XML转换成字串String,处理之后再转回XML。(注:ie需要特殊处理,感兴趣的可以去百度搜索)

XML转字串String

xmlToString = (new XMLSerializer()).serializeToString(xmlObject);

字串String转XML

stringToXML = (new DOMParser()).parseFromString(xmlString, "text/xml");

快速取整数

在JavaScript中取整数,最常见的不外乎就是Math.round()四舍五入、Math.floor()返回小于等于给定数字的最大整数和 Math.ceil()函数返回大于或等于一个给定数字的最小整数(无条件进位)三种方法,不过如果通过两个「按位取反两次」~~(两个蚯蚓符号),也可以做到无条件舍去小数点的效果,这也是最快可以取整数的方法,下方的代码会先取得一个0~100的随机数,然后取出整数的部分。

const num = Math.random() * 100;console.log(num); // 输出原本的随机数console.log(~~num); // 无条件舍去小数部分,类似Math.floor()

~是按位取反运算,~~是取反两次。在这里~~的作用是去掉小数部分,因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数。与Math.floor()不同的是,它只是单纯的去掉小数部分,不论正负都不会改变整数部分。

小节

今天JS小技巧的分享就到这里,希望能在工作中对你有所帮助,建议大家整理梳理自己日常工作中会用到的小方法和小技巧,维护到自己的方法类库里,到时用的时候会事半功倍。在接下来的文章里,笔者会持续关注这方面的内容,将会整理成文章分享到这个系列里,欢迎你持续关注与订阅。

更多精彩内容,请关注“前端达人”公众号

javascript取随机数_一些常用Javascript 小技巧,值得你关注相关推荐

  1. 前端开发,JavaScript实际开发过程中常用JS小技巧

    1.JS 阻止'a'标签默认事件 //阻止a标签默认事件 var evt = evtwindow.event;/获取event对象 if (evt.preventDefault) {evt.preve ...

  2. [转]javascript常用的小技巧

    javascript常用的小技巧 分类: javascript 2011-12-19 09:30 170人阅读 评论(1) 收藏 举报 事件源对象 event.srcElement.tagName e ...

  3. windows光标_掌握这十个小技巧,帮你从Windows轻松过渡到MacOS

    Mac到手之后发现和Windows很多操作不一样!以前很多在Windows平台上非常便利的操作到了Mac平台上都没有用了.然而改变从来都不是一件容易的事,当从 Windows 系统的「舒适圈」里跳到需 ...

  4. javascript排序_鸡尾酒在JavaScript中排序

    javascript排序 Just want the code? Scroll all the way down for two versions of the code: 只需要代码? 一直向下滚动 ...

  5. 苹果怎么换行打字_苹果手机输入法的小技巧,你知道几个?最后一个你肯定不知道...

    我相信每个人手机上都有自带的输入法,输入法的设置关系到我们回复信息的快慢.为什么有的人回复信息的速度那么快,那是他们正确的使用了输入法.关于苹果手机的输入法你知道几个呢? 一:摇一摇删除和撤销 我们在 ...

  6. 手机删除的照片如何恢复?这3个恢复小技巧值得收藏

    手机已经成为人手不离的一个工具,随时拍照更是常事,小编就有个习惯,什么东西都想拍张照,在拍照过程中,有些照片拍了好几张,就会去删掉其中一些,留下一张当时觉得最好看的那张,在这之后,又想将照片找回来,但 ...

  7. javascript取随机数_查缺补漏一些 Javascript 的小技巧笔记

    前言 这篇文章的话,分享一些最近使用React开发项目时,用到的小技巧,其实也算是JavaScript中的一些技巧吧,内容主要有一下几点? 产生随机不重复id 快速取整数 合理布局样式 字符串xml的 ...

  8. 电脑常见问题_电脑知识,每日一课,计算机常用维修小技巧

    现一些小问题.对于大多数的电脑小白来说,只要电脑出现一点小问题就束手无策了.今天给大家介绍几个电脑维修的小技巧. 常见问题一,蓝屏,报警器不停叫.解决办法:电脑蓝屏一般是硬件问题,报警器叫就是内存条出 ...

  9. win7定时关机命令_电脑两个小技巧:新手设置电脑定时关机 VS 定时开机的方法详解!...

    关于电脑使用小技巧,我们之前也分享过不少,有朋友在后台问,如果用命令设置电脑的开机关机,今天李哥就跟大家来详细说说这个问题.定时关机:关于电脑定时关机可能还有很多小伙伴不知道这个功能,当然也肯定也不清 ...

最新文章

  1. PyTorch中的数据输入和预处理
  2. python常考题_Python语言基础考察点:python语言基础常见考题(一)
  3. Error: Program type already present: okhttp3.Authenticator$1
  4. jquery eaayui 学习(四)datagrid
  5. mysql中如何迁移数据文件,迁移mysql数据文件存放位置
  6. java中使用json import_JAVA中使用JSON
  7. sg90舵机工作原理_舵机跑舵原因无解,锲而不舍终除隐患好文推荐!
  8. C语言输出一个菱形图案,最优方案,不需要分上下两部分输出
  9. Revit二次开发_类别对应的BuiltInCategory枚举
  10. 【WIN10】win10更改以太网名称以及以太网下网络名称
  11. 计算机游戏的作文,描写电脑游戏的优秀作文300字(通用3篇)
  12. 关于各种职业的英文单词zz
  13. 25779.html
  14. 数据百问系列之二:游戏DAU骤降分析
  15. AngularJS vs. jQuery,看看谁更胜一筹
  16. Java四大主流开源工作流引擎分析Shark,osworkflow,jbpm,jflow
  17. ibatis升级到mybatis总结
  18. 服务器无法开vnc端口问题
  19. 机械臂——六轴机械臂逆解
  20. 日志输出The last packet successfully received问题以及c3p0解决方案,max_statements

热门文章

  1. WiredTiger存储引擎知多少?
  2. 深入跨国互联网业务场景,看华为云数智融合元数据如何打破“数据墙”
  3. 一文详细分析公式树开源库
  4. 雾霾模糊?图像增强教你如何去雾
  5. update 没有索引导致业务崩了,老板骂了一个小时
  6. 【华为云技术分享】弹性负载均衡服务助力企业应对高并发流量冲击
  7. 如何进行需求结构化管理?
  8. oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法
  9. java 定时执行任务
  10. poj 1733 ParityGame 并查集 离散化