js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

函数封装和传参

首先我们,要封装这样一个函数,首先要确定,传入哪些参数。

  1. 字符串的长度

就这一个参数就可以了,现在是这样!

function randomString(len=6){}

随机数转字符串

数字转字符串,有两种方式!一种把所有随机字符,定义成为一个数组,例如

const arr = '1234567890qwertyuiopasdfghjklzxcvbnm'.split('')

第二步

function randomString(len=6){const arr = '1234567890qwertyuiopasdfghjklzxcvbnm'.split('')let text = ''for(let i =0;i<len;i++){const randomInt = parseInt(Math.random()*len)if(randomInt>=arr.length){text+=arr[arr.length-1]continue;}text+=arr[randomInt]}return text
}

但是这种方式是最传统的,且代码冗长,不是我们想要的!

接下来就是压轴的,我们最新颖的方式,进制数转随机字符串!

首先我们知道,进制是缝进制顶上的数字就进一,二进制是缝二进一,比如2转成二进制就是11。通常我们使用的颜色进制码大家都知道,是16进制,就已经存在字符串了。其实传统十进制以上,就已经存在字符串了。

重点

那我们想要在随机字符串出现全的字母怎么办呢,我们知道英语字母一共26个,十进制以上才会有字母。那么我们把随机出来的数字转成

36进制即可,怎么做呢!

Math.random().toString(36)

看到没,就是如此简单,没想到吧!😂

然后这样出来可以吗,肯定不行,还是没想到吧!

img

这样出来的结果可能是'0.d3v9gd3wxr5'这种的,前面还有0和小数点,那然后怎么去掉呢!你是不是也没猜到,其实也非常简单!

function randomString(len=6){Math.random().toString(36).substring(2,len)
}

但是这种情况存在问题,有没有可能你随机出来的数字长度不满足你len传入的数字,那怎么办呢?

img

你别慌,我有办法,可以在最后面补充0

function randomString(len=6){Math.random().toString(36).substring(2,len).padEnd(len,'0')
}

但是如果len太长,你全补充0是不是不太好,太不自然了,那有没有办法呢?你是不是拿它没办法了!

img

别慌,我有办法!经过测试,Math.random().toString(36).length最低的长度基本是11位,那么我们可以判断11位如果都不到就补0,如果超了11位,就递归调用自己,直到满足len即可!

function randomString(len=6){if(len<=11){return Math.random().toString(36).substring(2,2+len).padEnd(len,'0')}return randomString(11)+randomString(len-11)
}

恭喜你,这样就做到最完美了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/222039.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java抽象类和接口(2)

&#x1f435;本篇文章继续对接口相关知识进行讲解 一、排序 1.1 给一个对象数组排序&#xff1a; class Student {public String name;public int age;public Student(String name, int age) {this.name name;this.age age;}public String toString() {return "name:…

2023年10个最受欢迎的性能测试工具

当下软件的性能也是软件成败的一个关键因素。在高负载情况下软件产品出现各种性能问题&#xff0c;比如变慢、宕机都会严重影响客户对产品的信任进而影响客户对公司的信任。比如本次双十一&#xff0c;阿里云全线产品宕机事件&#xff0c;都让阿里集团遭到技术、信誉层面的双重…

基于C#实现十字链表

上一篇我们看了矩阵的顺序存储&#xff0c;这篇我们再看看一种链式存储方法“十字链表”&#xff0c;当然目的都是一样&#xff0c;压缩空间。 一、概念 既然要用链表节点来模拟矩阵中的非零元素&#xff0c;肯定需要如下 5 个元素(row,col,val,down,right)&#xff0c;其中&…

C#开发的OpenRA游戏之属性SelectionDecorations(10)

C#开发的OpenRA游戏之属性SelectionDecorations(10) 前面分析了选择属性,继续分析前面的内容,不过这里不再是选择,而是选择相关的属性。 当用玩家选择地图上一个物品,或者士兵,或者坦克时,就会在周边画上一些指示标记,并且有一个状态条。 通过上图,可以看到建筑物周…

数据资产入表在即,企业要从数据治理入手

数据是驱动数字经济发展的核心生产要素&#xff0c;数据资产化是释放数据要素价值的重要方式。2024年1月1日&#xff0c;《企业数据资源相关会计处理暂行规定》将正式实施。企业数据资产入表已进入倒计时&#xff0c;企业作如何充分发挥海量规模数据和应用场景等优势&#xff0…

数据结构与算法编程题28

计算二叉树结点总数 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }B…

8个无需编写代码即可使用Python内置库的方法!

近几年 Python 语言之所以流行&#xff0c;是因为我们可以使用它编写更少的代码来实现复杂的功能。Python 开发者社区非常欢迎那些封装了复杂实现但是对使用者十分友好的工具包。 然而&#xff0c;Python 的简便性不止如此。你能相信我们可以在不写任何代码的情况下使用 Pytho…

CloudCompare 源码编译

一、下载源码 二、cmake 编译 这里面有四个比较重要的地方 1、源码的位置 2、生成的位置 3、项目的位置 4、qt 的位置 三、编译 开始测试&#xff0c;先用那个项目做测试 没有问题 然后用build的那个打开 加入Qt 的相关库到qcc中 启动项目生成cloudcompare 启动 ok ,完成…

pikachu靶场:php反序列化漏洞

pikachu靶场:php反序列化漏洞 文章目录 pikachu靶场:php反序列化漏洞代码审计漏洞利用 代码审计 像这种反序列化的代码基本都是代码审计出的 // 定义一个名为S的类&#xff0c;该类有一个属性$test和一个构造函数 class S{ var $test "pikachu"; // $test是一个…

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(用户资料修改)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现&#xff08;用户资料修改&#xff09; 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先&#xff0c;通过深入分析项目所需数据&#xff0c;包括用户、商品、商品类别、收藏、订单、购物…

数据结构与算法编程题27

计算二叉树深度 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTNo…

【Java】使用IntelliJ IDEA搭建SSM(MyBatis-Plus)框架并连接MySQL数据库

步骤 0 准备工作1 创建Maven项目2 配置Maven依赖3 配置数据源4 项目结构5 创建实体类6 创建数据访问层7 创建服务层8 创建Controller层9 启动项目10 使用Postman测试接口 0 准备工作 下载并安装 IntelliJ IDEA下载并安装 MySQL 数据库下载并安装Postman测试工具使用 Navicat 创…