JS6

*栈和队列:js中没有真正的栈和队列的类型
一切都是用数组对象模拟的
栈:只能从一端进出的数组,另一端封闭
FILO
何时使用:今后只要仅希望数组只能从一端进出时
如何使用:2种情况:
1. 末尾出入栈:已入栈元素的下标不再改变
入栈: arr.push(新值1,...)
出站: var last=arr.pop()

2. 开头出入栈:每次入栈新元素时,已入栈元素的位置都会向后顺移。
入栈:arr.unshift(新值1,...);
出站:var first=arr.shift();

队列:只允许从末尾进入数组,必须从开头出数组
FIFO
结尾入队列:arr.push();
开头出队列:var first=arr.shift();

2. *二维数组:数组中的元素,又引用了另一个子数组对象
何时使用二维数组:2种:
1. 只要保存横行竖列的二维数据
2. 保存上下级关系的数据时

如何创建二维数组:2种:
1. 先创建空数组,再赋值:
var arr=[];
arr[0]=["石家庄","保定","唐山"];
arr[1]=["德州","济南","烟台"];
2. 创建数组时,同时初始化子数组:
var data=[
[0,2,2,4],
[2,4,4,8],
[16,32,16,8],
[4,2,128,4]
];

如何访问二维数组中的数据:arr[行下标][列下标]
比如:data中第2行,第3个元素
data[1][2]
强调:二维数组中,行下标不能越界!
console.log(data[1][5]); //undefined
console.log(data[5][1]); //
//undefined[1]

  遍历二维数组:
固定套路:外层循环遍历行,内存循环遍历列
var arr=[[...],[...]...]
for(var r=0;r<arr.length;r++){
for(var c=0;c<arr[r].length;c++){

}
}
3.***String: 字符串:
什么是字符串:多个字符组成的一个*只读*的集合(数组)
凡是数组对象中,不修改原对象的API,字符串都能用!
比如:.length属性:字符个数;都可用[i]访问每个字符
比如:slice, indexOf

凡是数组对象中,直接修改原对象的API,字符串都不能用!
比如:push, sort , splice

内置对象:ES标准中已经定义好的,
由浏览器厂商已经实现的对象
11个:String Number Boolean
Array Date Math RegExp
Error
Function Object
Global(全局)

包装类型:临时封装原始类型数据,
提供对原始类型数据的操作方法
3种:String Number Boolean(不能new)
何时使用包装类型:自动使用
为什么使用包装类型?原始类型的数据本来没有任何方法
当程序中使用原始类型调用方法时,程序会自动创建包装类型对象封装该数据。
函数调用完,包装类型自动释放

String API:*所有API都无法直接修改原字符串*
1. 转义字符:当字符串的内容和程序的特殊符号冲突时
或字符串中包含功能字符时,都用\转化字符的意义
\n:换行 \t: 一次缩进Tab键
2. 大小写转换:将字符串中所有字符都统一转为大写或小写
何时使用:不区分大小写时
比如:用户名 验证码 电子邮件
转大写:str=str.toUpperCase();
转小写:str=str.toLowerCase();
3. 获取指定位置的字符:3种:
1. str[i]
2. str.charAt(i)
3. str.charCodeAt(i)-->获得字符的unicode号
4. 查找关键字的位置:2种:
1. var i=str.indexOf(kword[,starti]);
从左向右,查找kword首字符在字符串中的下标
如果没找到,返回-1
starti:从starti位置开始向后查找下一个
如果省略starti,默认从0开始找
2. var i=str.lastIndexOf(kword[,starti])
从starti位置开始,向左找!下一个kword

posted @ 2017-04-20 00:33  钱钱钱啊  阅读(288)  评论(0)    收藏  举报