JavaScript知识点总结3

1.栈和队列

js 中没有真正的栈和队列的类型,一切都是用数组对象模拟的

(1)栈:一端进出的数组;FILO(first in last out)

1.末尾出入栈:已入栈元素的下标不再改变

    入栈:arr.push();

    出栈:var last = arr.pop();

2.开头出入栈:每次入栈新元素时,已入栈元素的位置都会向后顺移

    入栈:arr.unshift();

    出栈:var first = arr.shift();

(2)队列:末尾进入数组,开头出;FIFO

末尾入队列:arr.push();

开头出队列:var first = arr.shift();

2.二维数组中,行下表不能越界。

3.String对象

定义:多个字符组成的一个只读的集合(数组)。字符串的API都不能修改字符串本身。

凡是数组对象中,不修改原对象的API,字符串都能用;如:.length、可用 [i] 访问每个字符等。

凡是数组对象中,直接修改原对象的API,字符串都不能用。

(1)内置对象

就是ECMAScript标准中定义好的,有浏览器厂商已经实现的标准对象

内置对象中封装了专门的数据和操作数据常用的API

JavaScript包含11个内置对象:

String、Number、Boolean(原始类型的对象)

Array、Date、Math、RegExp(正则表达式对象)(引用类型对象)

Error(出错信息对象)

Function(所有函数对象的祖宗)、Object(所有对象的祖宗)

Global(全局,页面中等同于window)

(2)包装类型

临时封装原始类型数据,并提供对原始类型数据的操作方法。

何时使用:自动使用。

为什么使用:原始类型的数据(String、Number、Boolean)本来没有任何方法,当程序中使用原始类型数据调用方法时,程序会自动创建包装类型对象,封装该数据。

函数调用完,包装类型自动释放。

4.String的API

(1)获取子字符串

1.var subStr = str.slice(starti [, endi + 1]);支持负参数(倒着数)

2.var subStr = str.substring(starti [, endi + 1]);不支持负参数

3.var subStr = str.substr(starti , n);n—取几个

(2)大小写转换

1. str.toUpperCase();

2. str.toLowerCase();

(3)获取指定位置字符

1. str[i]; 倒数第二个:str[str.length - 2];

2. str.charAt(i);

3. str.charCodeAt(i);返回字符的Unicode号

(4)查找关键字位置

1. var i = str.indexOf("keyword" [ , starti ]);找不到返回 -1。

2. var i = str.lastIndexOf("keyword" [ , starti ]);在左侧查找,左侧只要包含关键字的首个字符就可以找出。

(5)分割字符串

var arr = str.split("分隔符");arr中以数组形式保存每段字符串。

固定套路:将字符串切割为字符数组:var chars = str.split("");

(6)模式匹配:按照规则查找或替换字符串中的内容

查找:

1. var i = str.search(/keyword/ i);只能从开始位置,找第一个匹配的关键字。“i”不区分大小写

何时使用:仅判断有没有关键字时

与indexOf比较,search可以不区分大小写,indexOf区分大小写。

2. var arr = str.match(/keyword/ ig);

获得所有关键字的内容;arr.length 表示匹配的关键字个数;如果没有返回 null;无法获得关键字下标位置;

替换:var newStr = str.replace(模式,"替换内容");

5.正则表达式

1.手机号:

(1)+86或0086 可有可无,最多一次;

(2)空字符可有可无,数量不限;

(3)第一位必须是:1;

(4)第二位从3,4,5,7,8中选一个;

(5)最后必须是9位数字。

正则表达式:(\+86|0086)?\s*1[34578]\d{9}

2.身份证号:

(1)首先15位数字;

(2)2位数字 + 最后一位是:数字或 x,X;

(3)最后3位可有可无,最多出现1次。

正则表达式:\d{15}(\d{2}[0-9xX])?

6.RegExp对象(正则表达式API)

封装了正则表达式,提供了利用正则表达式执行验证和查找的API。

(1)创建:

1. var reg = / 正则表达式 / ig;正则表达式在运行时不会改变时使用。

2. var reg = new RegExp("正则表达式","ig");运行时正则可能被改变时使用。(正则中的 \ 都要改为 \\ 。)

(2)应用:格式验证 + 查找

1.格式验证:var bool = reg.test(str);

    验证:要求从头到尾必须完整匹配。

    问题:test方法默认只要部分匹配即可。

    解决:在正则表达式前加 ^(表示开头位置),后加 $(表示结尾位置)。

               ^ 和 $ 联用表示从头到尾必须完整匹配。

例子:密码强度要求:

(1)6位密码,只能是字母、数字的组合;

(2)至少包含一位大写字母;

(3)至少包含一位数字。

预判:1.不全由小写字母或数字组成;(可能包含大写或符号)—> (?![a-z0-9]*$)

          2.不全由小写字母或小写组成;(可能包含数字或符号)—> (?![a-zA-Z]*$)

正式规则:只能是字母数字的组合 —> 屏蔽了符号 —> [a-zA-Z0-9]{6}

完整的正则表达式:(?![a-z0-9]*$) (?![a-zA-Z]*$) [a-zA-Z0-9]{6}

2.查找API:var arr = reg.exec(str);在str中查找所有符合reg的关键字。(要加g)

每次查找arr中只保存一个查找结果,故需要循环exec()方法,其中:

(1)arr[0]:保存了当前关键字的内容;(因为只保存一个结果,所以在 0 的位置)

(2)arr.index:保存了当前关键字的位置;

(3)reg.lastIndex:保存下次开始查找的位置。

何时使用:只要既查找内容,有查找位置,只能用该方法。

7.查找总结

(1)var i = str.search(reg) ;—> 判断有没有;缺:不能指定开始位置。

(2)var arr = str.match(reg) ;—> 获得所有关键字内容、个数;缺:不能反悔位置 。

(3)var i = str.indexOf("keyWord" [,starti]) ;—> 从指定位置开始查找下一个关键字位置;缺:不支持正则。

(4)var arr = reg.exec(str);—> 即获得内容,又获得位置;缺:复杂。

8.String中的正则API(将正则与String对象中的方法结合)(略~没看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值