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(); //从后向前执行