第五章引用类型
js创建数组的方式两种:1var colors=new Array(),里面可以定义长度或者实际内容。2 var color=[ ];
js中没有代码块概念for(var i=0;i<10;i++){doSomething(i)} alert{i} 结果为10
js函数中var声明的函数会自动添加到最近的环境,比如调用一个函数,里面的var变量时访问不了的
但是,如果一个变量没有被声明为var,那么他就可以被外部环境所访问(建议一定要对变量进行声明)
js数组push和pop方法可以实现栈,而push和shift方法可以实现队列的功能
js实现排序功能:reverse方法倒叙输出数组,sort实现排序,但是要写一个compare函数作为参数传入sort方法
数组的contact方法可以基于当前数组所有项创建一个新的数组,接受的参数可以是一个多个数组或者值
slice()方法切掉传入的参数对应的数组元素,返回新数组
数组的splice方法,返回一个数组(是第几项,而不是数组下标):原则有三种
1删除:接受两个参数:起始删除元素位置以及删除的项数(调用此方法后原数组显示剩下的数,返回的新数组为删除的元素)
2插入:接受三个参数:要插入的位置、0、插入的内容(多个用逗号隔开即可,调用此方法后原数组显示新增后的数组,返回的新数组为空)
3替换:接受三个参数:起始位置、删除的项数(大于0)、替换的内容(替换起始位置后一个,原数组变为替换后的数组,新变量返回的为删除内容)
数组的位置方法:两个indexOf和lastIndexOf(都返回要查找数值的数组下标,不存在返回-1)
迭代方法:五个迭代方法every,some,filter,map,foreach
每个迭代方法都接受两个参数(要在数组每个元素上运行的函数和运行该函数的作用对象(可不写此项)),而在每个元素上运行的函数要有三个参数;数组元素的值,数组元素对应的下标,数组本身
如:
var numbers=[1,2,3,4,5,4,3,2,1];
var everyResult=numbers.every(function (item,index,array){return (item>2);});
alert(everyResult);
every:如果每个数组元素都满足内部函数要求,返回true;
some:如果有数组元素满足内部函数要求,返回true;
filter:返回满足内部函数要求的数组元素值
map:返回执行内部函数后的数组元素
foreach:无返回值,本质上与for循环迭代数组一样
缩小方法:reduce和reduceRight(reduce数组从前到后执行,二reduceright从后到前)接受两个参数(每一项执行的函数以及作为缩小基础的初始值(可选)),参数函数接受四个参数:前一个值,当前值,项的索引,数组对象。函数返回的值作为下一次执行的第一个参数传给下一个函数