数组API的学习
栈和队列:添加元素和删除元素的新方式
栈:其实就是数组,只不过是一端封闭了,只能从另一端进出
例如:电梯、旅游巴士...优先使用最新的数据
如何使用:
开头进:arr.unshift(新值,...);
添加元素的新方式,向前添加
缺点:导致其余元素的下标都会发生变化
开头出:var frist=arr.shift();
删除元素的新方式,向前删除
缺点:导致其余元素的下标都会发生变化
结尾进:arr.push(新值,...);
添加元素的新方式,向后添加
结尾出:var last=arr.pop();
删除元素的新方式,向后删除
队列:其实就是数组,只不过是一端进,从另一端出
开头进:arr.unshift(新值,..);
![](https://img-blog.csdnimg.cn/img_convert/a7e844a303f8542d989e31ee65f10ec4.png)
结尾出:var last=arr.pop();
![](https://img-blog.csdnimg.cn/img_convert/47c711f0020b5fc4e167ca4e9a7ae390.png)
结尾进:arr.push(新值,...);
![](https://img-blog.csdnimg.cn/img_convert/d1cccdfc3263010d25b303b2aa4515e7.png)
开头出:var first=arr.shift();
![](https://img-blog.csdnimg.cn/img_convert/7d49f240fae0b3ba38617687f8058594.png)
扩展:
定时器:
开启:
timer=setInterval(function(){
操作;
},间隔毫秒数)
停止:
clearInterval(timer)
鼠标移入:onmouseover
鼠标移出:onmouseout
二维数组:数组的元素,又引用着另一个数组
在一个数组,再次细分每个类
创建:
var arr=[[值,...],...]
访问
arr[行下标][列下标];
特殊:
列下标越界,返回undefined
行下标越界,得到一个报错,因为行下标已经得到一个undefined,undefined没资格再加[]做操作
遍历二维数组:必然两层循环,外层控制行,内层控制列
for (var r=0;r<arr.length;r++){
for(var c=0;c<arr[r].length;c++){
console.log(arr[r][c]);
}
}
ES5提供6个API
判断:2个
every:
每一个
要求所有元素都满足条件才会为true,只要一个不满足则为flase,非常类似于&&
var bool=arr.every(function(val,i,arr){
// val——当前的值
// i——当前值的下标
// arr——当前数组本身
return 判断条件;
})
some
有一些
要求只要一个满足条件会为true,所有元素不满足则为flase,非常类似于||
var bool=arr.some(function(val,i,arr){
return 判断条件;
})
遍历:
拿到数组中的每个元素做相同或相似的操作
farEach
直接修改原数组
arr.forEach(function(val,i,arr){
操作;
})
map
不修改原数组返回一个新数组
var newArr=arr.map(function(val,i,arr){
操作;
})
过滤:
筛选出你需要的部分,但是不一样的是原数组不会发生变化
var subArr=arr.fiter(function(val,i,arr){
return 判断条件;
})
汇总
var result=arr.reduce(function(prev,val,i,arr){
return prev+val;
},基础值)
以上6个API都是简化for循环操作
ES6箭头函数:
简化一切匿名回调函数
固定公式:
function去掉
()和{}之间添加=>
如果形参只有一个,那么()可以省略
如果函数体只有一句话,那么{}也可以省略
如果函数体只有一句话并且还是return,那么return和{}都可以省略
String概念
概念:
多个字符组成的【只读】字符【数组】
只读:所有的字符串的API都不会修改原字符串,都会返回新的字符串
相同点:
字符串的个数:str.length;
获取字符串中的某个字符:str[i];
遍历字符串
所有数组不修改原数组的API,字符串可以使用(concat、slice)
不同点:
所有数组不修改原数组的API,字符串都不可以使用;比如排序只有数组可以使用,但是字符串也有很多属于自己的API
引用/对象类型
String(字符串) Number(数字) Boolean(布尔) =>包装类型
Array(数组) Function(函数) Date(日期) Math(数学) RegExp(正则:验证)
Error(错误)
Object(面向对象开发方式)
Global(全局对象)——只有在游览器中被window对象代替,自然保存着全局变量和全局函数,只不过window可以省略不写;学习node.js这个后端语言,在node.js中全局对象叫做geolexp
包装类型:
专门用于将原始类型的值封装为一个引用类型的对象
为什么:
原始类型的值原本没有任何属性和方法,意味着原始类型本身不支持去做任何操作,但是字符串经常会被程序员所操作,为了方便程序员就为这三个提供了包装类型(提供属性和方法)
何时使用:
只要你试图使用原始类型的变量或方法的时候,自动包装
何时释放:
方法调用完毕后,自动释放包装类型,变回原始类型
为什么null和undefined不能使用
因为没有给他们提供包装类型