以下为自学笔记。
一、Array类型
创建数组的基本方式有两种:
1.1第一种是使用Array构造函数(可省略new操作符)。
1.2第二种是使用数组字面量表示法。
二、数组的访问
2.1访问方法
在读取和设置数组的值时,要用方括号并提供相应值的基于0的数字索引:
2.2length属性
数组的项数保存在length属性中,这个属性始终返回0或者更大的值。
数组length属性不是只读的,通过设置这个属性,可以从数组的末尾移除项或者向数组中添加新项。看下面的例子:
三、转换方法
valueOf():返回数组
toString():返回由数组每个值的字符串形式拼接而成的一个以逗号分隔的字符串。为了创建这个字符串会调用数组每一项的toString()方法
toLocaleString():返回由数组每个值的字符串形式拼接而成的一个以逗号分隔的字符串。为了创建这个字符串会调用数组每一项的toLocaleString()方法
join()方法,可以使用不同的分隔符来构建这个字符串。
join()方法只接受一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串
如果不给join方法传入任何值,或者传入undefined,则用逗号作为分隔符。
四、栈方法
栈:一种LIFO(Last-In—First-Out)后进先出的数据结构,
push():接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。
pop():从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
五、队列方法
队列:一种FIFO(First-In—First-Out)先进先出的数据结构。
shift():能够移除数组中的第一个项并返回该项,同时将数组长度-1. 使用shift()+push()方法,可以像使用队列一样使用数组。
unShift():能够在数组前端添加任意个项并返回新数组的长度. 使用unShift()和pop()方法能从反方向模拟队列
六、重排序方法
6.1 reverse()"反转数组项的顺序
6.2 sort()
sort() 方法用于对数组的元素进行排序。
如果调用该方法时没有使用参数,将按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
七、操作方法
ECMAScript为操作已经包含在数组中的项提供了很多方法,下面介绍三种
7.1 concat()方法会先创建当前数组的一个副本,然后将接收到的参数添加到副本的末尾,并返回新构建的数组
传递给concat方法的参数有3种情况:
1、没有参数
如果没有给concat方法传递参数,那么它只复制当前数组并返回副本
2、如果传递给concat()方法的是一个或多个数组,则该方法将这个数组中的每一项都添加到副本数组中
3、如果传递的参数不是数组,那这些参数就会被简单的添加到副本数组中去
7.2 slice()方法
基于当前数组创建选定元素的新数组。
语法:arrayObject.slice(start,end)
start:规定从哪个数组下标处开始选取
end:规定从哪个数组下标处结束选取,可选参数
如果只有一个参数:返回从该参数指定位置开始到当前数组末尾的所有项
如果有两个参数:返回起始和结束位置之间的项,但不包括结束位置项。
如果参数中有负值:用数组长度加上参数来确定相应位置
注:slice方法不会影响原来的数组
7.3 splice()方法
1、删除:删除任意数量的项,并返回这些项。语法arrayObject.splice(index,howmany).index:要删除的第一项的位置,howmany:要删除的项数
2、插入:向指定位置插入任意数量的项,返回空数组。语法arrayObject.splice(index,0,item1,item2...itemN),index:起始位置、0:要删除的项数(纯插入不删除 任何项),item:要插入的项
3、添加:向指定位置插入任意数量的项,删除任意数量的项,语法arrayObject.splice(index,howmany,item1,item2...itemN),index:起始位置、howmany:要删除 的项数,item:要插入的项
八、位置方法
indexOf(要查找的项,起点位置):从数组的开头开始向后查找
lastIndexOf(要查找的项,起点位置):从数组的末尾开始向前查找
这两个方法都返回要查找的项在数组中第一次出现的位置,没找到的情况下返回-1.如果 起点位置为负,则搜索从数组长度加上起点位置处开始。在比较要查找的项与数组中的每一项时,会要求两项必须严格相等(===)。
九、迭代方法
每个方法都接受两个参数:要在每一项上运行的函数、运行该函数的作用域。
传入这些方法中的函数会接受三个参数:数组项的值、该项在数组中的位置、数组对象本身。
这些方法都不会修改数组本身包含的值。
1、every()方法对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.否则返回false,如果数组没有元素,则返回true。
2、filter()方法对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
3、forEach()方法对数组的每一项运行给定函数,这个方法没有返回值,但是回调函数可能会有返回值。这个方法本质上与使用for循环迭代数组一样。
4、map()方法对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
5、some()方法对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
十、归并方法
迭代数组所有的项,并构建一个最终返回的值。
reduce()从数组的第一项开始,遍历后面的项
reduceright()从数组的最后一项开始,向前遍历到第一项
这两个方法都接收两个参数:在每一项上调用的函数、作为归并基础的初始值。
传给二者的函数接收4个参数:前一个值、当前值、项的索引、数组对象
这个函数返回的任何值都会作为第一个参数传给下一项,第一次迭代发生在数组的第二项上,所以第一个参数是数组的第一项,第二个参数是数组的第二项。