2种创建数组的的方式
- 使用Array构造函数创建:
- var colors = new Array();
- 如果给构造函数传递数量,而该数量就会变一个具有length属性的值。例如:
- var colors = new Array(20);//此数组的length为20。
- 如果给构造函数传递是其他类型的参数,则会创建包含那个值的数组,例如:
- var colors = new Array("ee","ww");
- 创建一个包含2项,既字符串"ee","ww"的数组
- 此外使用构造函数创建数组时,可忽略new操作符。
- var colors = Array(3);等同于 var colors = new Array(3);
- 使用数组字面量表示法创建,多个数组之间使用逗号隔开
- var colors = ["red","blue","green"];//创建一个包含3个字符串的数组
- var name = [];//创建了一个空数组
- var values = [1,2,];//NO!!!,这样会创建一个包含2项或3项的数组
- var opations = [,,,];//NO!!!,这样会创建一个包含3项或4项的数组
- 以上代码第三行展示了数组字面量最后一项添加逗号的结果会在IE中,values会成为一个包含3项的值,分别为1、2和undefined的数组;在其他浏览器中会成为一个包含2项的值分别为1、2的数组。原因是因为IE8及之前的版本中的ECMAscript实现在数组字面量方面存在bug,由于这个bug导致另外一种情况如最后一行代码所示,该代码可能会创建包含3项的数组(IE9,Firefox,Open,Safari和Chrome中),也可能会创建包含4项的数组(IE8及更早版本)。这种情况下,每一项的值都为undefined。因为IE的实现和其他浏览器不一样,因此不建议使用这种方法创建数组。
读取和设置数组的值- 使用方括号并提供相应值的基于0的数字索引
- var colors = ["red","blue","green"];//定义一个字符串数组
- consloe.log(colors[0]);//显示第一项
- colors[2] = "black";//修改第三项
- colors[3] = "brown";//修改第四项
- 方括号的索引表示要访问的值,索引从0开始,0表示数组中的第一项,1表示数组中的第二项...一次类推。
- 数组的项数保存在数组的length属性中,这个属性始终会返回0或者更大的值,例如
- var colors = ["red","blue","green"];
- var arr = []
- console.log(colors.length); //3
- console.log(arr); //0
- 数组的length属性很有特点,它不是只读的,因此通过设置这个属性,可以从数组的末尾移除项或增加,例如:
- var colors = ["red","blue","green"];
- colors.length = 4;
- console.log(colors[3]);//"undefined"
- colors数组虽然包含3项,但是把数组的length改为4后,这个数组不存在位置3的值,所以访问这个位置的值就为undefined了。
- 利用length属性给数组末尾添加新数组
- var colors = ["red","blue","grren"];
- colors[colors.length] = "black"; //在索引为3的位置添加一个颜色
- 由于数组最后一项的索引始终是数组的length-1。