一、利用length属性
length返回数组长度,可以利用这一属性,为数组最后追加元素:
var color=['red','blue','green'];
color[color.length]='black';
color[color.lenght]='brown';
//输出color为['red','blue','green','black','brown'];
二、检测数组
推荐使用Array.isArray()方法,该方法在参数为数组的时候返回ture:
if(Array.isArray(value)){
//若value为数组,则返回true
}
三、转换方法
toString()方法和valueOf()方法会返回数组的值,这个值是以逗号隔开的每个数组项组合成的字符串:
var color=['red','blue','green'];
color.toString(); //red,blue,green
color.valueOf(); //red,blue,green
join()方法会依据传入的参数,将数组的每项隔开,返回组合成的字符串:
var color=['red','blue','green'];
color.join('||'); //red||blue||green
四、操作数组
1、栈方法(后进先出)
push()方法:接收任意参数,把它们逐个添加到数组末尾,并返回数组长度。
pop()方法:从数组末尾移除最后一项,减少数组的length,然后返回被移除的项。
2、队列方法(先进先出)
shift()方法:移除数组中的第一个项,同时减少数组的length,然后返回被移除的项。
unshift()方法:从数组前端添加任意个项,数组length+1,并返回数组长度。
3、重排序方法
reverse()方法:此方法会反转数组顺序,就酱······。
sort()方法:
此方法首先会调用每一项的toString()方法,然后比较每一项的字符串,最终以升序得到排序结果。因为是比较字符串的ASCII值,所以会出现以下现象:
var values=[0,1,5,10,15];
values.sort();
alert(values); //0,1,10,15,5
由于这样排序并不理想,一般会传入一个比较函数当做参数,以下为升序效果的比较函数:
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var values=[0,1,5,10,15];
values.sort(compare);
alert(values); //0,1,5,10,15
4、操作方法
concat()方法:
基于当前数组的所有项新创建一个数组,即先创建当前数组的一个副本,然后将接收的参数添加到副本末尾,并返回创建新数组。
var values=[0,1,5,10,15];
var new_values=values.concat('7',['25','45']);
alert(new_values); //0,1,5,10,15,7,25,45
slice()方法:
基于当前数组的一项或多项创建新的数组,接收两个参数:要返回项的起始位置和要返回项的结束位置(可选):
var values=[0,1,5,10,15];
var new_values1=values.slice(1);
var new_values2=values.slice(1,3);
alert(new_values1); //1,5,10,15
alert(new_values2); //1,5,10
如果传入的参数为负数,则用数组length加上该数字来确定相应的位置,如果一个数组有5项,则slice(-2,-1)与slice(3,4)得到的结果是一样的。
splice()方法:
该方法主要实现删除、插入和替换功能,主要依据传入的参数而定,其返回的是删除的数组项:
1、splice(0,2):即起始位置为0,删除项数为2,插入项为空,所以可以实现删除数组前两项的功能;
1、splice(2,0,’red’,’green’):即起始位置为2,删除项数为0,插入项为’red’,’green’,所以可以实现从数组第3项插入新项;
1、splice(2,2,’red’,’green’):即起始位置为2,删除项数为2,插入项为’red’,’green’,所以可以实现将数组的第3、4项替换为新项;
5、位置方法
indexOf()方法:查找数组项的位置,接收两个参数:要查找的项和查找起点位置的索引(可选)。indexOf()方法表示从头往末尾查找,lastIndexOf()方法表示从末尾往头查找。两个方法都返回查找的结果的位置索引,在没有找到时返回-1。在查找时使用的是全等(===)。
6、迭代方法
迭代方法共有5个,每个方法都接收两个参数:要给每一项运行的函数和运行该函数的作用于对象(可选),传入的函数接收三个参数:数组项的值(item)、数组项的索引(index)、数组本身(array)。
1、every()方法:对数组中的每一项运行给定的函数,如果每一项都返回true,则返回true。
2、some()方法:对数组中的每一项运行给定的函数,如果任意一项返回true,则返回true。
3、filter()方法:对数组中的每一项运行给定的函数,则返回结果为true的项组成的数组。
4、map()方法:对数组中的每一项运行给定的函数,则返回每次函数调用结果组成的数组。
5、forEach()方法:对数组中的每一项运行给定的函数,然而并没有返回值。
7、归并方法
reduce()方法:此方法会迭代数组所有项,然后构建一个最终返回值。接收两个参数:一个在每一项上调用的函数和作为归并寄出的初始值(可选),传入的函数接收四个参数:前一个值(prev)、当前值(cur)、项的索引(index)和数组项(array)。
var value=[1,2,3,4,5];
var sum=value.reduce(function(prev,cur,index,array){
return prev+cur;
})
alert(sum); //15
reduceRight()方法:此方法参照reduce()方法,只是从最后一项开始迭代。