ECMAscript 数组每一项可以保持任何类型的数据。
创建数组
var num=new Array();
可以给数组预先设置项的数量:var num=new Array(20);
创建20项,每一项的值为undefined
另一种创建数组的方法,数组字面量表示法
var num=[ ]; 用方括号创建一个空数组。
读取数组
数组的索引是以0为基数。
所以nue[0] 返回 1
为num数组添加新项。num[5]是一个undefined。赋值6
修改num指定位置的值 num[0]=2; 那么 1被修改成2;
数组的项数保存在length属性中
索引值始终数length-1
length可以移除末尾项与在末尾项添加新项
给num.length属性设为2,第2项之后的项被移除。
给num添加了 一个新项。值为undefined;
检测数组
value instanceof Array
判断num是否为数组,如果是返回true
另一种检测是否为数组的方法
Array.isArray(value);
如果是数组返回true。
转换方法
所有对象都具有toString()、toLocaleString()、valueOf()的方法。
num.toString( )返回字符串形式的数组所有项
num.valueOf( )返回数组本身。
toLocaleString()返回的形式和toString()相同。当时有些情况可能会有所不同。
join( )方法接受一个参数,用来构建分隔数组项的分隔符。
栈方法(在数组项末尾移除项与末尾添加项)
数组可以表示得就像栈一样,栈是一种可以限制插入和删除项的数据结构。栈是一种LIFO 后进先出的数据结构。插入项叫推入
,移除项叫弹出,而且只发生在栈的顶部。
push()和pop方法分别可以在数组的末端添加项或移除项
push在数组的末尾添加3,4两项。然后返回数组项数,即数组长度
pop把数组末尾项移除,并返回该项的值4.
队列方法
队列的数据结构FIFO 先进先出。
shift( )方法可以移除数组第一项,返回移除项的值。
num.unshift( )在首项前添加1,返回数组长度即总数组项。
重排序方法
数组中有两个可以用来重排序的方法reverse()和sort()
使用reverse( ) 方法,数组项的顺序被反转。
sort()方法,调用toString( )转型方法,取得数组项是字符串形式,然后比较字符串的大小,sort(_) 采用的是升序的排列数组项。即使数组的每一项都是数值也采用字符串形式进行比较.
sort()方法,可以接受一个比较函数作为参数。
该函数接收两个参数即数组的项。如果a-b是负数。a排在b前面。a-b是整数则b排在a前面。如果等于0则原地不动。
操作方法
concat( )方法可以复制其它数组创建一个新数组,可以接受参数添加到复制的数组末尾。
numNew 通过num.concat 取到num的整个数组,concat(1,2,3)3个参数作为numNew
的项,从末尾插入。
slice( )方法可以取得数组任何位置的项。slice( ) 可以接收2个参数。第一个参数取项的开始索引位置,第二个参数是结束取项的索引位置但不包括本身。
取1到2的项,当不包括2。 如果是splic(1,1) 那将取到一个空数组
如果结束项数超出了数组的项数,那么相当于只带一个参数。只带一个参数slice将从开始位置取到剩余项。
如果参数是负数则负数加上数组的长度 .
splice( )方法。有三种功能 删除 插入 替换 ,splice提供三个参数。起始位置、要删除几项、要插入的项。
插入项可以传入多个参数
splice()插入项返回空数组。使用splice()方法原数组都受影响。在数组的前面即左边插入新项0,-1.
splice( )删除会返回删除项的值。1,2会删除数组2项,1位置1之后的。
splice( )替换会返回删除项的值。删除1位置的-1,替换成2.
位置方法
indeOf( )和lastIndexOf()方法。可以查询值得位置。indexOf是从开头查起,LastIndexOf是从末端查起。
indeOf 如果没有找到将返回-1,得到的位置是索引位置
得到的结果和indexOf()相同。只是从末尾查起
indexOf和lastIndexOf 第二个参数是从那个位置开始查起。
迭代方法
ECMAScript为数组定义了5个迭代方法。每个方法接收两个参数。要在每一项运行的函数和运行该函数的作用域对象。
函数会接收三个参数 数组项的值,该项在数组中的位置即索引值,数组对象本身。
var num=[1,2,3,4,5]
every( ) 方法将每一项的位置遍历一遍比较函数。如果全部返回true。即返回true。如果有一个是false则返回false。相当于逻辑与&&
filter()方法将每一项的位置遍历一遍比较函数,返回结果为true的位置值。1的索引位置是0;所有返回数组项1。
forEach()对数组中每一项运行给定函数,这个方法没有返回值。
map( )方法将每一项的位置遍历一遍比较函数,返回每一项函数遍历后的结果。
some()方法,将每一项的位置遍历比较函数,只要有一项比较函数为true则返回true ,相当逻辑或 ||。
归并方法
ECMAScript 两个归并数组的方法 reduce()和reduceRight()。
reduce()方法从数组的第一项开始,逐个遍历到最后。
而reduceRight()方法则从数组的最后一项开始,向前逐个遍历到第一项。
两个方法都接收两个参数。每一项调用的函数和作为并归基础的初始值。 初始值就是函数接收参数里的前一个值。
两个方法得函数接收4个参数。前一个值、当前值、项的索引值和数组对象。这个函数返回的任何值都会作为第一个参数自动返回给下一项。第一次迭代发生在数组的第二项上,因此第一给参数上数组的第一项,第二个参数就是数组的第二项。
reduce方法。第一项1+第二项2=3. 3这个值可以理解为前一项。这个时候prev=3,第二次迭代3+3=6,6即前一项,以此类推直到迭代结束。返回最终结果15.
reduce方法提供了第二个参数,那么第二个参数会作为前一项的值。迭代从第一项1开始。所以结果为16.
reduceRight的结果与reduce的结果相同,因为只是执行简单的操作。但是prev的值5,cur值4.