1.创建数组:使用构造函数或数组字面量
- var colors = new Array(3); //创建含有3项的数组
- var colors = Array(3); //同上,缩略用法
- var colors = new Array(“blue”,”green”); //可直接赋值
- var colors = [“blue”,”green”];
2.数组长度属性
- “array.length“是可读可写的,可以通过为其赋值,直接改变数组长度
- colors[colors.length] = “red”; //直接给数组新加入一项
3.检测一个对象是不是数组:
- value instanceof Array //如果不是同一个全局操作环境(例如框架),则不是同一个构造函数,可能会有些问题。
- Array.isArray(value) //ES5新增的方法,可通用
4.所有对象都有的方法:
- .valueOf( ) | .toString( ) //返回相同的值:每个值的字符串形式拼接而成,以“,”分隔的字符串。
- alert(colors) //默认调用toString方法,所以返回结果同上。
- .toLocalString( ) //与.toString( )相比,唯一的不同是它会调用每项的.toLocalString()方法而不是.toString()方法。
5.使用特定分隔符将数组各项拼合为字符串:
- colors.join(“|”); //默认分隔符为“,”
6.栈方法、队列方法
- colors.push(“black”,”white”); //逐项添加到数组末尾,并返回修改后的数组长度
- colors.pop(); //移除数组最后一项,并返回该项
- colors.shift(); //移除数组第一项,并返回该项
- colors.unshift(“black”,”white”); //在数组前端加任意项,并返回修改后的数组长度。该方法IE8之前支持的有问题
7.重新排序:
- .reverse(); //反转数组项的顺序,返回处理后的数组
- .sort(); //默认按升序排列,调用每项的toString()方法来比较字符串顺序,返回处理后的数组
- .sort(compare); //可为其传递一个比较函数:比较函数需另外定义,它接受两个参数(代表正在比较的两项),返回正数表示需要交换两项的位置,返回0或负数不用执行调整。
8.基于现有数组创建新数组:
- colors.concat(“yellow”,[“brown”,”gray”]); //先创建当前数组的副本,再将接受到的参数添加到这个副本的末尾,如果传入的有数组,则会把该数组的每一项拆分开,分别添加进入。最后返回新数组。原来的数组保持不变。
- .slice(); //传入两个数字时,表示创建一个从某项到某项的新数组(不含结束位置的项),传入1个数字值时,表示从某项到结尾。返回新数组,不影响原数组。传入负数表示倒数某项。
- .splice(); //可用于向数组中部插入项。接受的第一个数值参数为开始操作的位置;第二个参数表示要删除掉的项数;后续参数为需要插入的具体值。返回被删除项所组成的数组,没删则返回空数组。会影响原数组。
9.查询某项在数组中的位置(ES5)
- colors.indexOf(“red”); //从头向尾查找,返回匹配到的第一个位置索引,没查到返回-1,使用“===”进行匹配;传入的第二个参数表示查找起点位置的索引。
- .lastIndexOf(); //从后向前查找
10.迭代方法(ES5)
- 接受两个参数:每项需要运行的函数;运行该函数的作用于对象-影响this值(可选)。
- 被传入的函数接受三个参数:数组项的值item;该项的索引index;数组对象array。
- .every(); //每项运行给定函数,均返回true,则返回true
- .some(); //每项运行给定函数,任一项返回true,则返回true
- .filter(); //返回一个新数组,该数组由所有返回true的项构成
- .forEach(); //没有返回值,每一项都运行一遍函数
- .map(); //每一项都运行一遍函数,返回新数组,该数组由每项运行的结果构成
11.迭代各项,构建最终返回值(ES5)
- 接受两个参数:每项需要执行的函数;作为缩小基础的初始值(可选)
- 被传入的函数接受4个参数:前一个值prev;当前值cur;当前索引index;数组对象array。第一次迭代发生在第二项上。
- .reduce(); //从前向后执行
- .reduceRight(); //从后向前执行