数组
遍历数组
普通for循环
for(var i = 0; i < 5; i++){
document.write(arr[i]);
}
for…in语句用于遍历数组或者对象的属性(快速枚举法)
for(var i in arr){
document.write(arr[i]);
}
数组的方法
栈方法
- **push()**方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。
- 而**pop()**方法则从数组末尾移除最后一个元素,减少数组的length值,然后返回移除的元素。
alert(box.push("盐城”)); //数组末尾添加一个元素,并且返回长度
box.pop() //移除数组末尾元素,并返回移除的元素
队列方法
shift()方法可以移除数组首位元素,并且返回长度
alert(box.push("深圳”)); //数组末尾添加一个元素,并且返回长度
alert(box.shift()); //移除数组开头元素,并返回移除元素
alert(box.unshift()); //数组开头添加两个元素
数组的一个函数
- concat() 方法可以基于当前数组创建一个新数组。
- slice() 方法可以基于当前数组获取指定区域元素 [start, end)
- splice() 方法由于其参数的特殊性,可以完成 增、删、改三个功能
splice中的删除功能:
var box2 = box.splice(0, 2);
splice中的插入功能:
var box2 = box.splice(1, 0, “钢铁侠”);
splice中的替换功能:
var box2 = box.splice(1, 1, 100);
- join() 方法用数组元素组成字符串。
- reverse() 逆向排序
- sort() 从小到大排序,字符串排序
声明提升
在当前作用域,声明变量和函数,会直接提升在整个代码的最前面运行。
如果不加var,会强制提升为全局变量,但这是一个错误语法,不建议使用。
二维数组
数组的值可以是任意类型,如果在数组中添加数组,那就相当与一个二维数组。
严格模式
写在哪个作用域下,在哪个作用域下生效。
“use strict”
【注】尽量注意不要严格模式写在全局
用了严格模式,会有什么变化:
- 全局变量声明时,必须加var
- 函数内重名属性
- argument对象不允许被动态修改
- 新增保留字:implements, interface, let, package, private, protected, public, static, yield。
严格模式的目的:
- 消除JavaScript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
【注】"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它。
另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。
ECMA5新增数组方法
indexOf()
格式:数组.index(item,start);
参数:item 任意的数据
第二个参数表示从该字符串的第n位开始检索 可以不传入
功能:在数组中查找第一次出现item元素下标,从start开始去查找
返回值: -1 没有查找到
>=0 查找到的元素下标
forEach()循环
var arr = [2, 3, 4, 5, 6, 7];
arr.forEach(function(item, index, arr){
三个参数分别代表
item 当期遍历到的元素
index 当前遍历到的下标
arr 数组本身
})
map映射
通过return+关系式生成并返回一个新的数组。
filter() 过滤
return + 条件式 ,判断数组内容是否符合条件,过滤掉不符合条件的数组内容。
some() 某些
在数组中查找是否有符合条件的元素,有返回true,没有返回false。
短路操作:只要找到符合条件的元素,后面的循环就停止了。
every 每一个
在数组中查找每一个元素是否有符合条件,符合返回true,不符合返回false。
短路操作:只要找到不符合条件的元素,后面的循环就停止了。
reduce 归并
prev 第一次是 下标为0的元素
第二次开始 上一次遍历return的值
next 从下标1开始,当前遍历到的元素
arr 数组本身