一, 利用 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()方法, 只是从最后一项开始迭代.
来源: http://www.jianshu.com/p/0cd8dbc35898