第二章、数组、对象和正则表达式 2019-12-17

一、数组

  1. 定义:在单个对象中存储多个值。
  2. 构造函数:
    1)Array():返回一个长度为0的数组对象。
    2)Array(size):返回具有指定个数的数组,元素的初始值都是:undefined。
    3)Array(元素列表):用元素列表初始化数组,元素可以是任意类型。
  3. 直接创建并初始化数组
    var arr = ["tom",10,null,true];
  4. 数组的长度不固定,赋值即可改变数组的长度
    1)为原数组不存在的下标元素赋值,可以改变数组大小:
    例如:
    var arr = new Array(3);
    arr[3] = 10;
    arr[5] = 100;
    未赋值元素都是undefined。
    2)数组的lengt属性不是只读的,可以改变(变大或变小(相当于删除后面的元素))
  5. 使用下标来访问元素
  6. 遍历写法:
for(i in arr){
document.write(arr[i]);
}

注意:i表示遍历的当前元素的下标,而不是当前元素。
7.length:数组的长度,即数组中元素的个数。
8.常用的方法:
1)concat(array):返回一个新数组,由当前数组和参数数组连接而成。
2)join("分隔符"):返回一个字符串,由数组中的所有元素连接而成,原宿建德分隔符由参数指定。字符串对象。split('分隔符'):根据参数指定的分隔符,把当前字符串转换为数组。
3)reverse():返回一个新数组,由原来的数组反转而成。
4)sort():按照字母殊勋对数组中的元素进行排序。
sort(比较函数):根据参数中的函数进行比较元素大小。
例如:

arr.sort(function(x,y){
                return x - y;
            });

5)indexOf(element):在数组中查找参数指定的值第一次数显的位置,找到返回对应的索引号,没有找到返回-1.。
6)lastIndexOf(element):在数组中查找参数指定的值最后一次出现的位置,找到返回对应的索引号,没有找到返回-1。
7)slice(beginIndex,endIndex):返回一个新数组,为原来数组的一部分,不包括endIndex元素。
8)toString():返回将数组中的元素转为由逗号分隔的字符串。
9)栈操作:
栈的特点:先进后出,后进先出。
a)push(元素列表):给数组中增加新元素,并返回数组的新长度(入栈)。
b)pop():移除数组中的最后一个元素,并返回该元素(出栈)。
10)队列操作:
队列的特点:先进先出,后进后出。
a)push(元素列表):入队
b)shift():移除数组中第一个元素并返回该元素(出队)。
11)splice(index,howmany,element…):用户向数组中添加、删除、替换数组元素。
a)index:必需,从何处添加。删除元素。
b)howmany:必需,规定应该删除多少个元素,添加元素的时候,该值为0。
c)elemant…:元素列表,可选,向数组添加的元素列表。

练习:
1.使用prompt()函数读入5名学生的成绩,保存到一个数组中,并求数组中的最大值,并倒序排序输出。
2.随机生成1-100以内的20个数,放入到数组中,对前10个元素使用升序,对后10个元素使用降序。

二、引用类型

  1. javascript语言中并没有真正的类,javascript中使用“对象的定义”这个概念,相当于其他语言中的类的概念。

  2. 引用类型:也称为对象的定义,描述一类对象所共同具有的属性和方法。

  3. 内置的引用类型:ECMAScript提供了很多原声引用类型,以便开发人员使用。
    1)Object
    2)Array
    3)Date
    4)Math
    5)RegExp(正则表达式)

  4. 对象:通过引用类型创建的一个实例。

  5. 对象的创建方式。
    1)创建一个Object的实例,然后添加它的属性和方法。
    var o = new Object();
    o.name = "tom";
    o.age = 20;
    o.sayHi = function(){
    alert("Hi!");
    }
    o.sayName = function(){
    alert(this.name);//this表示当前对象
    }

     o.sayName();//方法的调用
    

    2)使用字面量方式创基金对象。
    var stu = {
    name: "tom",
    "age": 20,
    sayHi:function(){
    alert("Hi");
    }
    };

  6. 使用delete删除对象的属性。
    delete stu.age

  7. with语句的作用:将代码的作用域设置到一个特定对象上。
    with(stu){
    var n = name;
    var a = age;
    }

  8. 对象的废除
    在ECMAScript中有无用存储单元收集程序,因此,javascript不必专门销毁对象来释放内存。

三、Date对象

  1. 构造函数:
    1)Date():得到浏览器的当前时间。
    2)Date(year,month,date):根据参数指定的年月日创建日期对象(注意:month从0开始)。
    3)Date(year,month,date,hours,minutes,seconds):根据参数指定的年月日时分秒创建日期对象(注意:month从0开始)。
    4)Date("year/month/date"):根据日期格式字符串创建日期对象(注意:month从1开始)。
  2. 得到年月日时分秒
    getXXX():
    getYear():得到从1900年以来的年份(日期的年份减去1900)
    getFullYear():得到真是年份
    getMonth():得到月份(1月份为:0)
    getDate():得到日期
    getDay():得到星期,0表示星期日,1表示星期一
    getHours():得到小时
    getMinutes():得到分钟
    getSeconds():得到秒
    getTime():得到从1970年1月1日00:00:00以来的毫秒数
  3. 设置年月日时分秒方法:
    setXXX()
    4.toLocaleString():把日期对象表示的时间转换为本地字符串格式(包括年月日时分秒)。
    toLocaleDateString():把日期对象表示的时间转换为本地字符串格式(包括年月日)。
    toLocaleTimeString():把日期对象表示的时间转换为本地字符串格式(包括时分秒)。
  4. 定时器:
    setTimeout("函数()",时间间隔):执行该定时器方法后,在指定的时间间隔到的时候,执行参数指定的函数一次
    该方法的返回值表示创建的定时器对象。
    clearTimeout(定时器对象):关闭定时器

四、键盘事件处理

  1. event:事件对象,在事件发生的时候,由系统创建
    属性:
    keyCode:键盘码,每一个按键都不同,例如:回车:13、空格:32、向上箭头:38
  2. 如何设置键盘事件处理程序
    document.onkeydown = 事件处理函数名(或匿名函数)

五、Math

  1. random():生产一个0到1之间的随机数,该值大于等于0,小于1。
  2. round(val):四舍五入。

六、String对象

  1. 构造函数:
    String("字符串字面量")
  2. 直接使用字符串字面量赋值。
    var s = 'tom';
  3. length:得到字符串中字符个数。
  4. 常用的方法:
    1)charAt(index):得到索引号为index的字符
    2)substring(startIndex,endIndex):取子串
    3)substr(startIndex,length):取子串
    4)indexOf(查找的串):在字符串中查找参数指定的字符串第一次出现的位置,找到返回对应的索引号,没有找到返回-1。
    5)lastIndexOf(查找的串):在字符串中查找参数指定的字符串最后一次出现的位置,找到返回对应的索引号,没有找到返回-1。
    6)replace(str1,str2):返回一个新的字符串,其中把原字符串中的第一个str1,替换为str2
    7)toUpperCase():转换为大写字母。
    8)toLowerCase():转换为小写字母。

七、表单验证

  1. 定义:在表单数据被提交给服务器之前,对html表单中输入的数据进行验证,如果没有错误,则提交表单,否则不提交。
  2. 作用:
    1)在客户端验证,速度快。
    2)减轻服务器压力。
  3. 验证过程:
    1)编写页面:



    2)当我们点击“提交”按钮的时候,会自动触发form上的onsubmit事件,接着就会调用事件的处理程序checkForm()。
    3)编写表单验证方法checkForm(),该方法返回值为true,表示验证成功,提交表单,返回false,表示表单验证失败,不提交表单。
    4.在失去焦点的时候,对某个表单元素进行验证。
    1)在验证表单元素的后面添加一个span标签,设置有id属性
    2)在要验证的表单元素中添加失去焦点事件处理程序:

    3)在checkUsername()方法中编写代码:
    a)得到span标签对象。
    b)设置span标签内容为空串(目的是为了先清除已前的错误消息)。
    c)判断当前表单元素是否输入正确,如果错误,为span标签指定错误消息。

八、正则表达式

  1. 定义:又称为规则表达式,就是用事先定义好的一些特殊字符、及这些特殊字符的组合,组成一个“规则字符串”,这个规则字符串用来表达对字符串的一种逻辑过滤。

  2. 作用:
    1)验证给定的字符串是否符合正则表达式的规则。
    2)可以通过正则表达式,从字符串中获取我们想要的部分(例如:“ab10eee20ddd30”)

  3. 语法:
    /正则表达式/修饰符(可选)

  4. 方法:
    1)test():检测字符串是否符合给定的规则,符合返回true,否则返回false
    2)exec():在字符串中查找符合规则的内容,返回数组对象

  5. 正则表达式的语言:
    1)方括号:用于查找某个范围的字符
    [abc]:表示任意一个字符
    [^abc]:表示不在其中的任意一个字符
    [0-9]:一个数字
    [a-zA-Z]:一个字母
    2)元字符:是拥有特殊含义的字符
    ^:从字符串的开始位置匹配
    $:从字符串结尾匹配
    \d:一个数字,相当于[0-9]
    \D:一个非数字,相当于[^0-9]
    \w:匹配包括下划线的任意单词字符,相当于[a-zA-Z0-9_]
    \W:匹配任意非单词字符,相当于[^a-zA-Z0-9_]
    .(点):匹配除了“\n”之外的任意单个字符
    | :或者
    ():将()中的表达式定义为“组”
    3)量词:
    +:一次或多次
    *:任意多次(0到多次)
    ?: 零次或1次
    {n}:n次
    {n,}:至少n次
    {n,m}:n到m次
    练习:验证一个日期字符串是否合法
    var s = "34";

  6. 修饰符:
    1)i:忽略大小写比较
    2)g:执行全局匹配(查找所有匹配而非找到第一个匹配后停止)
    var exp = /\d{2}/g;

     var s = "abcd10abce20ddd30xx";
     
     while(true){
         var arr = exp.exec(s);
         if(arr != null){
             document.write(arr+",");
         }else{
             break;
         }
     }
     //10,20,30,
    

    3)m:执行多行匹配
    var exp = /ef$/m;//是否某一行以ef结尾

     var s = "abcdef\ngh";
     
     var b = exp.test(s);
     document.write(b);//true, 不加m,就是单行匹配,返回false
    
  7. 字符串方法(部分)支持正则表达式
    1)replace(正则表达式,字符串):使用第二个参数的字符串替换第一个参数正则表达式匹配的内容。

     var s = "tom10marry20scott30zangsan";   
     var exp = /\d{2}/g;
     var s2 = s.replace(exp,"");//不加g,只替换第一个
     document.write(s2);
    

    2)split(正则表达式):使用正则表达式作为分隔符,返回分隔的数组

     var s = "tom10marry20scott30zangsan";           
     var exp = /\d{2}/;          
     var arr = s.split(exp);         
     document.write(arr);
    

    3)search(正则表达式):在字符串中查找正则表达式匹配的字符串,返回第一次找到的位置索引号,没有找到返回-1

     var s = "tom10marry207scott30zangsan";          
     var exp = /\d{3}/;          
     var index = s.search(exp);
     document.write(index);//10
    

    4)match(正则表达式):返回匹配的子串或null(没有找到匹配)

     var s = "tom70marry20scott30zangsan";           
     var exp = /\d{2}/g;
     var s1 = s.match(exp);
     document.write(s1);
    

//加g选项,返回匹配的数组(70,20,30),不加g选项,返回只有70一个元素的数组

验证身份证号
旧身份证为15位数字
新身份证为18为数字,或17位数字,最后位x或X

你可能感兴趣的:(第二章、数组、对象和正则表达式 2019-12-17)