您的位置:首页 > Web前端 > JavaScript

数组类型的方法

2016-12-22 16:47 169 查看
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 的值。

function compare(value1,value2){
     if(value1 < value2){  //
          return -1;
     }else if(value1 > value2){
          return 1;
     }else{
          return 0;
     }
}
这个比较函数可以试用于大多数据类型,只要将其作为参数传递给 short() 即可。
简化:
function compare(value1,value2){
     return value1-value2;
}

操作方法
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( ),对数组中每一项运行给定函数,这个方法没有返回值。

var number=[1,2,3,4,5,4,3,2,1];
var ever=number.every(function(item,index,array){
     return (item>2);
})
var some=number.some(function(item,index,array){
     return (item>2);
})
alert(every);  //false
alert(some);   //true
//some() 和 every() 是相似的,判断数组中的值是否大于2再返回结果,区别就和逻辑或和逻辑与一样。

var filter=number.filter(function(item,index,array){
     return (item>2);
})
alert(filter);   //[3,4,5,4,3]

var map=number.map(function(item,index,array){
     return item*2
})
alert(map);   //[2,4,6,8,10,8,6,4,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(数组第三项),这个过程会持续把数组每一项都访问一遍,然后返回结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息