JavaScript基础03

一、区别‘对象’与‘数组’

数组: 数据的组合(同一类) ;

对象: 数据的集合(形式 key:value)


//数组
var num = [1,3,56,76,544,90]; // number类型的数组
// 对象;特点:以键值对 key : value 形式存在
var obj = {    
name:"迪丽热巴",
age : 28,
gender:"女"
}
// 数组嵌套对象是最常见的
var data = [
{id:1,name:"boook1",date:"2020-10-10"},
{id:2,name:"boook2",date:"2020-11-10"},
{id:3,name:"boook3",date:"2015-03-10"},
{id:4,name:"boook4",date:"2011-09-10"},
{id:5,name:"boook5",date:"2023-10-10"}
]

  1. 同一类 不区分键值对 用数组
  2. 有键值对形式 用对象

二、随机数

是数学对象中的知识 Math对象

Math.random(); // 随机生成 0-1之间的小数 (0,1) [0,1) 0的概率很小

//进一法 小数部分只要有 就进位 
Math.ceil(float) 3.00000000001 => 4

//舍一法 不管小数部分多大都不要了 
Math.floor(float) 3.99999999 => 3

//四舍五入法 四舍五入 
Math.round(float)

验证码的生成

实现验证码步骤

1.从哪里选取一个字符 数组中拿 数组有下角标 可以通过下角标拿值 但是数组操作麻烦 于是采用字符串,字符串类似数组

2.这个字符得是随机而来的 Math.random()

3.我生成几个长度的字符 Qsd5 Qjk76H 用循环处理

  1. /*
  2. * @ count 计数 几位数的验证码
  3. */
  4. function getRandom(count) {
  5. var numberStr = 'qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM'
  6. var size = numberStr.length; // length比角标大1
  7. var codeNumber = ""; // 收集拼接而来的字符
  8. for (var i = 0; i < count ; i++) {
  9. var index = Math.floor(Math.random() * size);
  10. codeNumber += numberStr[index]
  11. }
  12. var code = document.querySelector(".code"); // 操作DOM
  13. code.innerHTML = codeNumber;
  14. }
  15. getRandom(4); //Q6t0

三、正则表达式

正确的表达方式 主要起到校验作用 检验用户输入是否合法

js研发之初就是做表单验证的

 
  
  1. // 定义正则表达式1 => new方式
  2. // 参数1 需要验证的规则
  3. // 参数2 修饰符号 i 忽略大小写 g 全局匹配 m 多行匹配
  4. var regexp1 = new RegExp("a",'i');
 
  
  1. // 定义正则表达式2 => //
  2. var regexp2 = /需要校验的规则/修饰符
  3. var regexp2 = /b/igm

校验规则

符号 含义 案例
^ (shift + 6) 开始、开头 ^a 表示只能a开头
$ (shift + 5) 结束、结尾 h$ 表示只能h结尾
[ ] 表示范围,从中任取其一(注意:前面的unicode值小于后面值的unicode值) [0-9] 表示数字0~9 [a-z] 表示字母a~z [7-9]正确的 [9-1] 不可以的 [a3589]可以的 选择a/3/5/8/9任一
{n} 其前面最近的表达式重复n次 [0-9]{9} 0~9任选其一可以出现9次
{n,m} 其前面最近的表达式最低出现n次最高出现m次 [0-9]{6,9} 0~9任选其一可以出现6次到9次之间 [6,9] 包含6和9
{n,} 其前面最近的表达式最低出现n次最高次数不限制 [0-9]{6,} 最低出现6最高爱多少多少
\ 转移字符 有一些特殊符号没办法正常显示 需要我们转义 \- 等价于 -

备注:unicode是一种编码 与utf-8同属编码类型

正则表达式的校验方法

 
  
  1. String.match(RegExp); // 字符串方法 用来验证 正则表达式 如果匹配成功 返回匹配成功的字符串 否则返回 null
  2. RegExp.test(String); // 正则表达式方式 用来验证字符串 如果匹配成功返回 true 否者返回 false
 
  
  1. var reg1 = new RegExp('[0-9]');
  2. var s1 = 'a8'
  3. console.log('match',s1.match(reg1));
  4. console.log("test",reg1.test(s1)); // true 解答:未规定开头结尾 那说明只要字符串中有数字就是对的 多少个无所谓
 
  
  1. var reg2 = new RegExp('^[0-9]');
  2. var s1 = 'a8'
  3. console.log('match',s1.match(reg1));
  4. console.log("test",reg1.test(s1)); // false 解答:规定开头 那说明只要字符串中不是数字开头就试错的
 
  
  1. var phoneReg = new RegExp('^1[356789][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$')
  2. var phoneStr = '15145201234';
  3. console.log(phoneReg .test(phoneStr));
  4. // 思考这么写合理吗 肯定不合理 不优雅 [0-9]写了这么多 冗余
 
  
  1. // 手机号码的正则表达式
  2. var phoneReg = new RegExp('^1[356789][0-9]{9}$'); // 这样写优雅
 
  
  1. // 密码 6-18位 字母 数字 下划线 美元符 特殊符号
  2. var passwordReg = new RegExp("^[a-zA-Z0-9_\-]{6,18}$"); // 注意使用转义字符\
  3. var password = "qwert-";

你可能感兴趣的:(javascript,前端,开发语言)