5.2 Arry类型
转换方法
toString( ) ,valueOf( ), toLocaleString( ), 在默认情况下都会以逗号分隔的字符串形式返回数组项,tolocaleString 在特定情况下会有例外。
join( ),接收一个参数,即用为分隔符的字符串,然后返回包含所有数组项的字符串。
栈方法
push( ),接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。
pop( ),移除数组末尾最后一项,减少数组的 lenght 值,并返回移除的项。
队列方法
shift( ),移除数组中第一个项并返回该项,数组长度减1。
unshift( ),在数组前端添加任意个项并返回新书组的长度。
重新排序方法
reverse( ),反转数组项的顺序。
sort( ),按升序排列数组,即最小值在前面,最大值排在后面, 如果调用该方法时没有使用参数,默认是会调用每个数组项的 toString( ) 转型方法来比较字符串,按字母顺序对数组中的元素进行排序。
若要按照数值的大小排序,需要使用一个排序函数该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
这个比较函数可以试用于大多数据类型,只要将其作为参数传递给 short() 即可。
简化:
操作方法
concat( ),基于当前数组中的所有项创建一个新的数组。没有传参的情况下只会复制当前数组并返回数组,如果传参了,无论是数组还是字符串这些值都会简单地添加到结果数组的末尾。
var colors=['red','blue','green']
var colors2=colors.concat('yellow',['black','brown']);
alert(colors); //red,blue,green,yellow,black,brown
slice( ) ,基于当前数组的一或多个项创建一个新的数组。该方法可以接受一或两个参数,即要返回项的起始和结束位置。
var colors=['red','blue','green','pink','purple']
var colors2=colors.clice(1); //从位置1开始复制
var colors3=colors.clice(1,4); //从位置1开始复制,位置3结束
alert(colors2); //blue,green,pink,purple
alert(cllors3); //blue,green,pink
splice( ),删除:删除任意数量的项,指定2个参数:要删除第一项的位置和要删除的项。
插入:指定位置插入任意数量的项,提供3个参数:起始位置、0(要删除的项数),要插入的项。
替换:指定位置插入任意数量的项,且同时删除任意数量的项。
var colors=['red','blue','green','pink']
colors.splice(0,1); //删除第一项
colors.splice(1,0,'yellow','orange') //从位置1插入两项
colors.splice(1,1,'red','purple') //插入两项,删除一项
位置方法
indexOf( ),lastIndexOf( ) ,返回要查找的项在数组中的位置,接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。
前者是从数组的开头(位置0)开始向后查找,后者是从数组末尾向前查找。
迭代方法
ECMASscript5 为数组定义了5个迭代方法。
每个方法接收两个参数:要在每一项运行的函数,和(可选的)运行该函数的作用域对象--影响 this 的值。
传入这些方法的函数会接收三个参数,数组项的值、该项在数组的位置、数组对象的本身。
every( ),对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true。
some( ),对数组中的每一项运行给定函数,如果该函数对任一项返回了 true ,则返回 true。
filter( ),对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
map( ),对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
forEach( ),对数组中每一项运行给定函数,这个方法没有返回值。
//some() 和 every() 是相似的,判断数组中的值是否大于2再返回结果,区别就和逻辑或和逻辑与一样。
归并方法
reduce( ),reduceRight( ),这两个方法都会迭代数组的所有项,然后构建一个最终的返回值。前者是从数组第一项开始往后遍历,后者是从数组最后一项开始往前遍历。
方法接收两个参数,一个在每一项调用的函数和(可选的)作为归并基础的初始值。
函数接收四个参数:前一个值、当前值、项的索引、数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。
var number[1,2,3,4,5];
var raduce=number.reduce(functon(prev,cur,index,array){
return prev+cur
})
alert(raduce); //15
//第一次执行回调函数,prev是1,cur是2,第二次prev是3(1+2的结果),cur是3(数组第三项),这个过程会持续把数组每一项都访问一遍,然后返回结果。