数组的API
栈和队列
栈
- 其实就是数组,只不过是一端封闭了,只能从另一端进出
- 如何使用:
- 开头进:
arr.unshift(新值,...);//添加元素的新方式,向前添加,缺点:导致其余元素的下标都发生变化
- 开头出:
var first=arr.shift();//删除元素的新方式,向前删除,一次只能删除一个,缺点:导致其余元素的下标都发生变化
- 结尾进:
arr.push(新值,...);//添加元素的新方式,向后添加。
- 结尾出:
var last=arr.pop();//删除元素的新方式,向后添加。
队列
- 其实就是数组,只不过一端进,从另一端出
- 如何使用:
- 开头进:
arr.unshift(新值,...);
- 结尾出:
var last=arr.pop();
- 结尾进:
arr.push(新值,...);
- 开头出:
var first=arr.shift();
二维数组
- 数组的元素,又引用着另一个数组
- 何时:在一个数组,希望再次细分每个分类
- 创建:
var arr=[
["xx",18,900],
["yy",19,1000],
["zz",20,700]
];
- 访问:
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还提供了3组6个API
判断:2个
every:每一个,要求所有元素都满足条件才会为true,只要有一个不满足则为false,非常类似于我们的&&
var bool=arr.every(function(val,i,arr){
return 判断条件;
})
some:有一些,要求只要有一个元素都满足条件会为true,所有元素都不满足则为false,非常类似于我们的||
var bool=arr.some(function(val,i,arr){
return 判断条件;
})
遍历
arr.forEach(function(val,i,arr){
直接做你想要的操作;
})
var newArr=arr.map(function(val,i,arr){
return 直接做你想要的操作;
})
过滤和汇总
filter过滤:筛选出你需要的部分,但是和现实不一样的是原数组并不会发生变化
var subArr=arr.filter(function(val,i,arr){
return 判断条件;
})
var result=arr.reduce(function(prev,val,i,arr){
return prev+val;
},基础值)
ES6箭头函数
- 简化一切匿名回调函数的
- 固定公式:
- function去掉,()和{}之间添加=>,
- 如果形参只有一个,那么()可以省略,
- 如果函数体只有一句话,那么{}也可以省略,
- 如果函数体只有一句话并且是return,那么return和{}都可以省略
String的概念
什么是字符串
和数组有相同点
- 字符串中的个数:
str.length;
- 获取字符串中的某个字符:
str[i];
- 遍历字符串
- 所有数组不修改原数组的API,字符串也可以使用(
concat、slice)
和数组不同的地方
- 所有数组的直接修改原数组的API,字符串都不可以使用,比如排序只有数组可以使用,但是,字符串也有很多很多属于自己的API
引用/对象类型:11个
String Number Boolean -> 包装类型
Array *Function Date(日期) Math(数学) *RegExp(正则:验证)
Error(错误)
Object(面向对象开发方式)
Global(全局对象)- 只有在浏览器中被window对象代替了, 自然保存着全局变量和全局函数,只不过window可以省略不写,有一天我们会去学习node.js这个后端语言,而在node.js中全局对象就叫做global
包装类型
- 专门用于将原始类型的值封装为一个引用类型的对象的
- 为什么:原始类型的值原本就是没有任何属性和方法,意味着原始类型本身是不支持.去做任何操作的,为了方便我们程序员将这三个人提供了包装类型(提供了属性和方法)
- 何时使用:只要你试图使用原始类型的变量调用属性或方法的时候,自动包装
- 何时释放:方法调用完毕后,自动释放包装类型,又变成了原始类型
- 为什么null和undefined不能使用--没有给他们俩提供包装类型
定时器、鼠标移入移出
timer=setInterval(function(){
操作;
},间隔毫秒数)
- 定时器停止:
clearInterval(timer)
- 鼠标移入:
onmouseover
- 鼠标移出:
onmouseout